Home | History | Annotate | Download | only in dcl.constexpr

Lines Matching full:constexpr

2 // RUN: %clang_cc1 -fsyntax-only -triple x86_64-unknown-unknown -std=c++11 -fcxx-exceptions -Wno-invalid-constexpr %s -DNO_INVALID_CONSTEXPR
6 constexpr int f(void *) { return 0; }
7 constexpr int f(...) { return 1; }
8 constexpr int g1() { return f(0); }
9 constexpr int g2(int n) { return f(n); }
10 constexpr int g3(int n) { return f(n*0); }
13 constexpr int c = 5;
14 constexpr int h() { return c; }
16 constexpr int c = 0;
17 constexpr int g4() { return N::h(); }
30 constexpr int f(bool b)
32 constexpr int f() { return throw 0, 0; } // expected-error {{constexpr function never produces a constant expression}} expected-note {{subexpression}}
35 constexpr B(int x) : i(0) { }
42 constexpr D() : B(global) { } // expected-error {{constexpr constructor never produces a constant expression}} expected-note {{read of non-const}}
49 constexpr int Comma(int n) { return // expected-error {{constexpr function never produces a constant expression}}
56 constexpr int BinaryOp1(int n) { return n + ng; } // expected-error {{never produces}} expected-note {{read}}
57 constexpr int BinaryOp2(int n) { return ng + n; } // expected-error {{never produces}} expected-note {{read}}
60 constexpr double BinaryOp1(double d) { return d + dg; } // expected-error {{never produces}} expected-note {{read}}
61 constexpr double BinaryOp2(double d) { return dg + d; } // expected-error {{never produces}} expected-note {{read}}
63 constexpr int Add(int a, int b, int c) { return a + b + c; }
64 constexpr int FunctionArgs(int a) { return Add(a, ng, a); } // expected-error {{never produces}} expected-note {{read}}
67 constexpr S InitList(int a) { return { a, ng }; }; // expected-error {{never produces}} expected-note {{read}}
68 constexpr S InitList1a(int a) { return S{ a, ng }; }; // expected-error {{never produces}} expected-note {{read}}
69 constexpr S InitList2(int a) { return { a, a, { ng } }; }; // expected-error {{never produces}} expected-note {{read}}
70 constexpr S InitList3(int a) { return a ? S{ a, a } : S{ a, ng }; }; // ok
72 constexpr int LogicalAnd1(int n) { return n && (throw, 0); } // ok
73 constexpr int LogicalAnd2(int n) { return 1 && (throw, 0); } // expected-error {{never produces}} expected-note {{subexpression}}
75 constexpr int LogicalOr1(int n) { return n || (throw, 0); } // ok
76 constexpr int LogicalOr2(int n) { return 0 || (throw, 0); } // expected-error {{never produces}} expected-note {{subexpression}}
78 constexpr int Conditional1(bool b, int n) { return b ? n : ng; } // ok
79 constexpr int Conditional2(bool b, int n) { return b ? n * ng : n + ng; } // expected-error {{never produces}} expected-note {{both arms of conditional operator are unable to produce a constant expression}}
82 constexpr bool BcpCall(int n) {
89 template<typename T> constexpr T cmin(T a, T b) {
95 constexpr X() {}
96 bool operator<(X); // not constexpr
99 X x = cmin(X(), X()); // ok, not constexpr
104 constexpr Y() {}
105 constexpr int get() { return T(); } // expected-warning {{C++1y}}
117 // expressions to be declared constexpr in system headers (libstdc++
118 // marks some functions as constexpr which use builtins which we don't
124 static constexpr int f() { return n; }