http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55280
Bug #: 55280
Summary: Compiler error: Class definition is recognized as
function declaration
Classification: Unclassified
Product: gcc
Version: 4.7.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: guangmu...@gmail.com
A and B are both class. If a object is defined by "A a(B());", compiler reports
a is none-class type A(B (*)()).
I guess g++ translates it to "B temp(); A a(b);". If a is defined by "A
a(B(argument));", it's OK. But unfortunately, default constructor is not
allowed to be used like "B temp();", temp is declared as a function.
ps: vs 2008 doesn't have the problem