#include <iostream>
 
class A {
 public:
   A(int i) : i_(i){
   	std::cout << "A() is constructed (this = " << static_cast<void*>(this) << ")\n";
   }
   ~A() {
   	std::cout << "A() is destructed (this = " << static_cast<void*>(this) << ")\n";
   }
   void hello() {
   	std::cout << "Hello from A! (this = " << static_cast<void*>(this) << ")\n";
   }
 private:
  int i_;
};

void hello(A& a) {
  return a.hello();
}

int main() {
	A a((hello(a),42));
}