http://llvm.org/bugs/show_bug.cgi?id=6772
Chandler Carruth <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |[email protected] Resolution| |INVALID --- Comment #1 from Chandler Carruth <[email protected]> 2010-04-04 04:15:34 CDT --- (In reply to comment #0) > Script started on Sat Apr 3 16:29:45 2010 > $ cat ccd.cpp > struct A { > A() {} > }; > > class B { > A a_; > }; > > int > foo() > { > const B b; > return 0; > } > $ g++ --version > g++ (GCC) 4.2.1 20070719 [FreeBSD] > Copyright (C) 2007 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > $ g++ -c ccd.cpp > $ clang++ --version > clang version 1.5 (trunk) > Target: i386-portbld-freebsd9.0 > Thread model: posix > $ clang++ -c ccd.cpp > ccd.cpp:12:10: error: default initialization of an object of const type 'B > const' requires a user-provided default constructor Clang is correct: C++'03 [dcl.init] p9: If no initializer is specified for an object, and the object is of (possibly cv-qualified) non-POD class type (or array thereof), the object shall be default-initialized; if the object is of const-qualified type, the underlying class type shall have a user-declared default constructor. The user declared default constructor for A makes A non-POD. The A member in B makes B non-POD, and thus this rule kicks in, and the code provided is invalid. You could re-open as a request for a GCC-compatibility setting to allow such code, but I don't personally see a lot of value in it. Perhaps others do, so feel free to re-open if you want to pursue that path. > const B b; > ^ > 1 diagnostic generated. > $ ^D > Script done on Sat Apr 3 16:30:29 2010 -- Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. _______________________________________________ LLVMbugs mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs
