blob: 57cb42ea4a98b2c7f78573b4e8cb724a8065b005 [file] [log] [blame] [edit]
// RUN: %clang_cc1 -std=c++14 -verify=both,expected %s -fexperimental-new-constant-interpreter
// RUN: %clang_cc1 -std=c++14 -verify=both,ref %s
constexpr int(*null_ptr)() = nullptr;
constexpr int test4 = (*null_ptr)(); // both-error {{must be initialized by a constant expression}} \
// both-note {{evaluates to a null function pointer}}
struct E {
int n = 0;
struct {
void *x = this;
};
void *y = this;
};
constexpr E e1 = E();
static_assert(e1.x != e1.y, "");
constexpr E e2 = E{0};
static_assert(e2.x != e2.y, "");
struct S {
int &&a = 2;
int b[1]{a};
};
constexpr int foo() {
S s{12};
return s.b[0];
}
static_assert(foo() == 12, "");