// PR c++/89285 | |
// { dg-do compile { target c++14 } } | |
struct A { | |
int a {}; | |
}; | |
struct B { | |
int b {}; | |
constexpr B (A *x) { | |
int *c = &x->a; | |
while (*c) | |
c = reinterpret_cast<int *>((reinterpret_cast<char *>(c) + *c)); | |
*c = reinterpret_cast<char *>(this) - reinterpret_cast<char *>(c); // { dg-error "reinterpret_cast" } | |
} | |
}; | |
struct C : A { | |
B bar {this}; | |
}; | |
constexpr C foo {}; // { dg-message "expansion of" } |