Richard Smith | 9ca5c42 | 2011-10-13 22:29:44 +0000 | [diff] [blame^] | 1 | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s |
Richard Smith | 2316cd8 | 2011-09-29 19:11:37 +0000 | [diff] [blame] | 2 | |
| 3 | struct NonLit { |
| 4 | NonLit(); |
| 5 | }; |
| 6 | |
| 7 | struct 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 Smith | 43a87fe | 2011-10-06 09:21:12 +0000 | [diff] [blame] | 13 | static const int d2 = 0; |
Richard Smith | 2316cd8 | 2011-09-29 19:11:37 +0000 | [diff] [blame] | 14 | |
| 15 | static constexpr double e = 0.0; // ok |
Richard Smith | 7b729cd | 2011-09-30 00:33:19 +0000 | [diff] [blame] | 16 | static const double f = 0.0; // expected-warning {{extension}} expected-note {{use 'constexpr' specifier}} |
Richard Smith | 256336d | 2011-09-29 23:18:34 +0000 | [diff] [blame] | 17 | static char *const g = 0; // expected-error {{requires 'constexpr' specifier}} |
Richard Smith | 2316cd8 | 2011-09-29 19:11:37 +0000 | [diff] [blame] | 18 | static const NonLit h = NonLit(); // expected-error {{must be initialized out of line}} |
| 19 | }; |
| 20 | |
Richard Smith | 43a87fe | 2011-10-06 09:21:12 +0000 | [diff] [blame] | 21 | constexpr int S::a; |
Richard Smith | 2316cd8 | 2011-09-29 19:11:37 +0000 | [diff] [blame] | 22 | constexpr int S::b = 0; |
| 23 | |
| 24 | const int S::c; |
| 25 | constexpr int S::d = 0; |
Richard Smith | 43a87fe | 2011-10-06 09:21:12 +0000 | [diff] [blame] | 26 | constexpr int S::d2; |