- #include <iostream> 
- #include <string> 
- #include <tuple> 
-   
- struct A 
- { 
-   A() = default; 
-   A(const A&) { std::cout << "copied" << std::endl; } 
-   A(A&&) { std::cout << "moved" << std::endl; } 
- }; 
-   
- std::pair<A, A> get_pair() 
- { 
-   std::cout << "in get_pair():" << std::endl; 
-   std::pair<A, A> p; 
-   return p; 
- } 
-   
- std::tuple<A, A> get_tuple() 
- { 
-   std::cout << "in get_tuple():" << std::endl; 
-   std::pair<A, A> p; 
-   return p; 
- } 
-   
- std::tuple<A, A> get_tuple_moved() 
- { 
-   std::cout << "in get_tuple_moved():" << std::endl; 
-   std::pair<A, A> p; 
-   return std::move(p); 
- } 
-   
- int main(int, char*[]) 
- { 
-   get_pair(); 
-   get_tuple(); 
-   get_tuple_moved(); 
- } 
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dHVwbGU+CgpzdHJ1Y3QgQQp7CiAgQSgpID0gZGVmYXVsdDsKICBBKGNvbnN0IEEmKSB7IHN0ZDo6Y291dCA8PCAiY29waWVkIiA8PCBzdGQ6OmVuZGw7IH0KICBBKEEmJikgeyBzdGQ6OmNvdXQgPDwgIm1vdmVkIiA8PCBzdGQ6OmVuZGw7IH0KfTsKCnN0ZDo6cGFpcjxBLCBBPiBnZXRfcGFpcigpCnsKICBzdGQ6OmNvdXQgPDwgImluIGdldF9wYWlyKCk6IiA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpwYWlyPEEsIEE+IHA7CiAgcmV0dXJuIHA7Cn0KCnN0ZDo6dHVwbGU8QSwgQT4gZ2V0X3R1cGxlKCkKewogIHN0ZDo6Y291dCA8PCAiaW4gZ2V0X3R1cGxlKCk6IiA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpwYWlyPEEsIEE+IHA7CiAgcmV0dXJuIHA7Cn0KCnN0ZDo6dHVwbGU8QSwgQT4gZ2V0X3R1cGxlX21vdmVkKCkKewogIHN0ZDo6Y291dCA8PCAiaW4gZ2V0X3R1cGxlX21vdmVkKCk6IiA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpwYWlyPEEsIEE+IHA7CiAgcmV0dXJuIHN0ZDo6bW92ZShwKTsKfQoKaW50IG1haW4oaW50LCBjaGFyKltdKQp7CiAgZ2V0X3BhaXIoKTsKICBnZXRfdHVwbGUoKTsKICBnZXRfdHVwbGVfbW92ZWQoKTsKfQo=