fork(1) download
  1. #include <iostream>
  2.  
  3. typedef int member_type;
  4.  
  5. struct base {
  6. base(base&&) { std::cout << "base moved\n"; }
  7. base(member_type&& m): member_(std::move(m)) { std::cout << "base inited\n"; }
  8. member_type member_;
  9. };
  10.  
  11. struct virt_1: virtual base {
  12. virt_1(virt_1&& rhs): base(std::move(rhs)) {}
  13. virt_1(member_type&& m): base(std::move(m)) {}
  14. };
  15.  
  16. struct virt_2: virtual base {
  17. virt_2(virt_2&& rhs): base(std::move(rhs)) {}
  18. virt_2(member_type&& m): base(std::move(m)) {}
  19. };
  20.  
  21. struct concrete: virt_1, virt_2, private virtual base {
  22. concrete(concrete&& rhs) = default;
  23. concrete( int a ) : base( std::move( a ) ), virt_1( 1 ), virt_2( 2 ) {}
  24. };
  25.  
  26. int main() {
  27. concrete a( 5 );
  28. concrete b = std::move( a );
  29. }
Success #stdin #stdout 0s 2852KB
stdin
Standard input is empty
stdout
base inited
base moved