Sent from my iPhone

> On Nov 8, 2014, at 1:21 AM, Abramo Bagnara <[email protected]> wrote:
> 
> 
> template<typename T> void f2(T a, T b = T()) { }
> 
> void m() {
>  f2(10);
>  f2(10);
>  f2(10);
>  f2(10);
> }
> 
> Checking the AST generated for the source above I've seen that the
> default argument expression is not instantiated in specialization of
> function f2, but instead such transformation is done (and redone) in the
> calls to f2.
> 
> In this way:
> 
> - we have dependent expr in the declaration of fully instantiated
> functions (that is unexpected, at least for me)
> 
> - we have multiple copies of the same expression (one for each call)
> 
> Is this deliberate?

The point of instantiation is at the call site where the default argument is 
needed, so this is correct. 

  - Doug

> -- 
> Abramo Bagnara
> 
> BUGSENG srl - http://bugseng.com
> mailto:[email protected]

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to