Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp0x/implicit3.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// Basic runtime test for implicit move constructor // { dg-do run { target c++11 } } int m; struct A { A() = default; A(A&&) { ++m; } A& operator=(A&&) { ++m; return *this; } }; struct B { B() = default; B(const B&); B(B&&) { ++m; } B& operator=(const B&); B& operator=(B&&) { ++m; return *this; } }; struct C { C() = default; C(C&); C(C&&) { ++m; } C& operator=(C&); C& operator=(C&&) { ++m; return *this; } }; struct D: public A, public B { C c; int i; }; struct E: public A, public B { C c; int i; E() = default; E(E&&) = default; E& operator=(E&&) = default; }; int main() { D d1; D d2 (static_cast<D&&>(d1)); d1 = static_cast<D&&>(d2); E e1; E e2 (static_cast<E&&>(e1)); e1 = static_cast<E&&>(e2); return m != 12; }