// { dg-do run { target c++11 } } | |
// { dg-additional-options "-O2" } | |
// { dg-additional-sources "launder5.cc" } | |
#include <cassert> | |
#include "launder5.h" | |
namespace std | |
{ | |
template <typename T> | |
T * | |
launder (T *p) | |
{ | |
return __builtin_launder (p); | |
} | |
} | |
int | |
main () | |
{ | |
B b{{42}}; | |
f(b); | |
assert(std::launder(&b.a)->x == 666); | |
} |