// PR c++/66583 // { dg-do run { target c++11 } } template T&& move(T& t) { return static_cast(t); } struct A { A() { }; A(const A&) { } }; struct B { union { int m_1 = 0; int m_2; }; A dummy; }; int main() { B b; b.m_1 = 1; B c = move(b); if (c.m_1 != 1) __builtin_abort(); }