blob: 007e416e6a492f4685dc7dea48229f80de796656 [file] [log] [blame]
Richard Smith9ca5c422011-10-13 22:29:44 +00001// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
Richard Smith2316cd82011-09-29 19:11:37 +00002
3struct NonLit {
4 NonLit();
5};
6
7struct S {
8 static constexpr int a = 0;
9 static constexpr int b; // expected-error {{declaration of constexpr variable 'b' requires an initializer}}
10
11 static constexpr int c = 0;
12 static const int d;
Richard Smith43a87fe2011-10-06 09:21:12 +000013 static const int d2 = 0;
Richard Smith2316cd82011-09-29 19:11:37 +000014
15 static constexpr double e = 0.0; // ok
Richard Smith7b729cd2011-09-30 00:33:19 +000016 static const double f = 0.0; // expected-warning {{extension}} expected-note {{use 'constexpr' specifier}}
Richard Smith256336d2011-09-29 23:18:34 +000017 static char *const g = 0; // expected-error {{requires 'constexpr' specifier}}
Richard Smith2316cd82011-09-29 19:11:37 +000018 static const NonLit h = NonLit(); // expected-error {{must be initialized out of line}}
19};
20
Richard Smith43a87fe2011-10-06 09:21:12 +000021constexpr int S::a;
Richard Smith2316cd82011-09-29 19:11:37 +000022constexpr int S::b = 0;
23
24const int S::c;
25constexpr int S::d = 0;
Richard Smith43a87fe2011-10-06 09:21:12 +000026constexpr int S::d2;