From: Richard Smith Date: Thu, 19 Jan 2012 22:50:02 +0000 (+0000) Subject: Further testing for instantiation of out-of-line constexpr static data member X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eb96af8a908ea28b2ca76e3848b2476852f592a6;p=clang Further testing for instantiation of out-of-line constexpr static data member template definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148506 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CXX/class/class.static/class.static.data/p3.cpp b/test/CXX/class/class.static/class.static.data/p3.cpp index 4d5ac470a0..fed715e219 100644 --- a/test/CXX/class/class.static/class.static.data/p3.cpp +++ b/test/CXX/class/class.static/class.static.data/p3.cpp @@ -32,9 +32,14 @@ struct U { // FIXME: It'd be nice to error on this at template definition time. static constexpr NonLit h = NonLit(); // expected-error 2{{must be initialized by a constant expression}} expected-note 2{{non-literal type}} static constexpr T c = T(); // expected-error {{must be initialized by a constant expression}} expected-note {{non-literal type}} + static const T d; }; +template constexpr T U::d = T(); // expected-error {{must be initialized by a constant expression}} expected-note {{non-literal type 'const NonLit'}} + U u1; // expected-note {{here}} U u2; // expected-note {{here}} static_assert(U::a == 0, ""); + +constexpr int outofline = (U::d, 0); // expected-note {{here}} expected-warning {{unused}}