#include <iostream>
#include <memory>
#include <exception>
using namespace std;

int randomint() {
  throw std::runtime_error("whoops");
  
  return 4;
}

void byval(std::unique_ptr<int> x, int y) {
  std::cout << *x + y << "\n";	
}

int main() {
	
	auto n = std::make_unique<int>(5);
	try {
		byval(std::move(n), randomint());
	} catch (std::exception& e) {
		std::cout << e.what() << "\n";
	}
	
	if (n) std::cout << "intact: " << *n << "\n";
	return 0;
}