2017-01-07 08:48:55 +08:00
|
|
|
// RUN: %clang_cc1 -verify %s -std=c++14
|
2012-03-13 15:21:50 +08:00
|
|
|
|
2018-07-24 05:21:22 +08:00
|
|
|
template<const int I> struct S { // expected-error {{reference member 'r' binds to a temporary object}}
|
2012-03-13 15:21:50 +08:00
|
|
|
decltype(I) n;
|
2018-07-24 05:21:22 +08:00
|
|
|
int &&r = I; // expected-note {{default member initializer}}
|
2012-03-13 15:21:50 +08:00
|
|
|
};
|
2018-07-18 06:24:09 +08:00
|
|
|
S<5> s; // expected-note {{implicit default constructor}}
|
2012-03-13 15:21:50 +08:00
|
|
|
|
2018-07-24 05:21:22 +08:00
|
|
|
template<typename T, T v> struct U { // expected-error {{reference member 'r' binds to a temporary object}}
|
2012-03-13 15:21:50 +08:00
|
|
|
decltype(v) n;
|
2018-07-24 05:21:22 +08:00
|
|
|
int &&r = v; // expected-note {{default member initializer}}
|
2012-03-13 15:21:50 +08:00
|
|
|
};
|
2018-07-18 06:24:09 +08:00
|
|
|
U<const int, 6> u; // expected-note {{implicit default constructor}}
|