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?
--
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