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