forked from OSchip/llvm-project
parent
9a6403a9de
commit
2fbb3d84a2
|
@ -0,0 +1,32 @@
|
|||
// RUN: %clang_cc1 -verify -std=c++11 %s
|
||||
|
||||
template<typename T> struct complex {
|
||||
complex(T = T(), T = T());
|
||||
void operator+=(complex);
|
||||
T a, b;
|
||||
};
|
||||
|
||||
void std_example() {
|
||||
complex<double> z;
|
||||
z = { 1, 2 };
|
||||
z += { 1, 2 };
|
||||
|
||||
// FIXME: implement semantics of scalar init list assignment.
|
||||
int a, b;
|
||||
a = b = { 1 }; // unexpected-error {{incompatible type 'void'}}
|
||||
a = { 1 } = b; // unexpected-error {{incompatible type 'void'}}
|
||||
}
|
||||
|
||||
struct S {
|
||||
constexpr S(int a, int b) : a(a), b(b) {}
|
||||
int a, b;
|
||||
};
|
||||
struct T {
|
||||
constexpr int operator=(S s) { return s.a; }
|
||||
constexpr int operator+=(S s) { return s.b; }
|
||||
};
|
||||
static_assert((T() = {4, 9}) == 4, "");
|
||||
static_assert((T() += {4, 9}) == 9, "");
|
||||
|
||||
int k1 = T() = { 1, 2 } = { 3, 4 }; // expected-error {{expected ';'}}
|
||||
int k2 = T() = { 1, 2 } + 1; // expected-error {{expected ';'}}
|
|
@ -45,6 +45,8 @@ int InitList() {
|
|||
(void)int{}; // expected-warning {{generalized initializer lists are incompatible with C++98}} \
|
||||
// expected-warning {{scalar initialized from empty initializer list is incompatible with C++98}}
|
||||
int x { 0 }; // expected-warning {{generalized initializer lists are incompatible with C++98}}
|
||||
S<int> s = {}; // ok, aggregate
|
||||
s = {}; // expected-warning {{generalized initializer lists are incompatible with C++98}}
|
||||
return { 0 }; // expected-warning {{generalized initializer lists are incompatible with C++98}}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue