Remove pre-standard restriction on explicitly-defaulted copy constructors with 'incorrect' parameter types, and instead just make those special members non-trivial as the standard requires. This required making CXXRecordDecl correctly handle classes which have both a trivial and a non-trivial special member of the same kind. This also fixes PR13217 by reimplementing DiagnoseNontrivial in terms of the new triviality computation technology. llvm-svn: 169667
17 lines
376 B
C++
17 lines
376 B
C++
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
struct S {
|
|
S(); // expected-note {{because type 'S' has a user-provided default constructor}}
|
|
};
|
|
|
|
struct { // expected-error {{anonymous structs and classes must be class members}}
|
|
};
|
|
|
|
struct E {
|
|
struct {
|
|
S x; // expected-error {{anonymous struct member 'x' has a non-trivial constructor}}
|
|
};
|
|
static struct {
|
|
};
|
|
};
|