http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55280
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-11-12 06:36:20 UTC --- A a(B()); is a function declaration and not a variable declaration. This is one of the ambiguities of the parsing which the C++ standard decided it was a function rather than a variable.