#include <cassert>
struct A
{
  int i;
};

A &operator<<(A &a1, A &a2)
{
  a1.i = a2.i;
  a2.i = 0;
  return a1;
}

int main()
{
  A a1, a2;
  a2.i = 400;
  A a3(a1 << a2);
  assert(a2.i == 0);
  assert(a3.i == a1.i);
  assert(a1.i == 400);
}
