Thanks for your help. I got my solution to work before I saw your first email but your solution was much better. I've changed my solution to the one with your suggestion (hopefully).
This last email confuses me more than it helps :D I'm not sure if I understand you correctly now. You don‘t want me to use the evaluations for the arguments while constructing the tree but the evaluations for the ICPPParameter?
I create my evaluation (EvalFold) with the evaluation for the pack expansion and (if existing) the init _expression_ as an array. If the evaluation hasn't been instantiated yet I'm just creating a TypeOfDependentExpression on getType().
I'm creating the tree currently in the instantiate(InstantiationContext, int): I get the instantiation point with CPPSemantics.getCurrentLookupPoint(), get the ICPPASTFunctionCallExpression from there on and then the evaluation of the function call where I get the evaluations from the arguments from. Then I create the tree with the evaluations for the arguments (+init if existing) and replace the existing evaluations that I constructed the EvalFold in the beginning with. I thought that this was maybe not the intended way but could not find a better way to get the evaluations for the arguments.
What do you mean now exactly? Which part is not correct about that?
Marco