#include <iostream>

using namespace std;

struct Data
{
  Data(int) { throw 42; }
  Data(void) { cout << __PRETTY_FUNCTION__ << endl; }
  Data(Data const&) { cout << __PRETTY_FUNCTION__ << endl; }
  Data(Data&&) { cout << __PRETTY_FUNCTION__ << endl; }
  ~Data(void) { cout << __PRETTY_FUNCTION__ << endl; }
};

struct More
{
  Data a_;
  Data b_;
};

More foo(void)
{
  return { Data{}, Data{1} };
}

int main(void)
{
  try
  {
    foo();
  }
  catch(...)
  {
    cerr << "exception" << endl;
  }
}
