[cfe-commits] r159733 - in /cfe/trunk: lib/Sema/SemaInit.cpp test/CodeGenCXX/const-init-cxx11.cpp test/CodeGenCXX/constructor-init.cpp test/SemaCXX/constant-expression-cxx11.cpp test/SemaCXX/cxx0x-initializer-constructor.cpp

Johannes Schaub schaub.johannes at googlemail.com
Sun Jul 8 06:41:41 PDT 2012


Am 05.07.2012 10:39, schrieb Richard Smith:
> Author: rsmith
> Date: Thu Jul  5 03:39:21 2012
> New Revision: 159733
>
> URL: http://llvm.org/viewvc/llvm-project?rev=159733&view=rev
> Log:
> PR13273: When performing list-initialization with an empty initializer list,
> actually perform value initialization rather than trying to fake it with a call
> to the default constructor. Fixes various bugs related to the previously-missing
> zero-initialization in this case.
>
> I've also moved this and the other list initialization 'special case' from
> TryConstructorInitialization into TryListInitialization where they belong.
>
...
> +namespace explicit_default {
> +  struct A {
> +    explicit A(); // expected-note{{here}}
> +  };
> +  A a {}; // ok
> +  // This is copy-list-initialization, and we choose an explicit constructor
> +  // (even though we do so via value-initialization), so the initialization is
> +  // ill-formed.
> +  A b = {}; // expected-error{{chosen constructor is explicit}}
> +}
> +

Richard, I'm pretty sure that this is valid code. A value-initialization 
doesn't respect "explicit". Are you assuming a C++ Standard defect here?




More information about the cfe-commits mailing list