#include <iostream>
#include <vector>
#include <string>
#include <memory>
#include <map>
#include <unordered_map>
using namespace std;
struct ptrwrap
{
unique_ptr< int > foo;
} ;
template < typename T>
struct holder
{
holder( ) = default ;
holder( const holder& b)
: t( b.t )
{
}
holder( holder&& b)
: t( std:: move ( b.t ) )
{
}
holder& operator= ( const holder& h)
{
t = h.t ;
return * this ;
}
holder& operator= ( holder&& h)
{
t = std:: move ( h.t ) ;
return * this ;
}
T t;
} ;
struct y_u_no_elision
{
holder< ptrwrap> elem;
} ;
typedef unordered_map< std:: string , y_u_no_elision> mymap;
mymap foo( ) ;
int main( )
{
auto m = foo( ) ;
m = foo( ) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgcHRyd3JhcAp7CiAgICB1bmlxdWVfcHRyPGludD4gZm9vOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBob2xkZXIKewogICAgaG9sZGVyKCkgPSBkZWZhdWx0OwoKICAgIGhvbGRlcihjb25zdCBob2xkZXImIGIpCiAgICAgICAgOiB0KGIudCkKICAgIHsKICAgIH0KCiAgICBob2xkZXIoaG9sZGVyJiYgYikKICAgICAgICA6IHQoc3RkOjptb3ZlKGIudCkpCiAgICB7CiAgICB9CgogICAgaG9sZGVyJiBvcGVyYXRvcj0oY29uc3QgaG9sZGVyJiBoKQogICAgewogICAgICAgIHQgPSBoLnQ7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIGhvbGRlciYgb3BlcmF0b3I9KGhvbGRlciYmIGgpCiAgICB7CiAgICAgICAgdCA9IHN0ZDo6bW92ZShoLnQpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICBUIHQ7Cn07CgpzdHJ1Y3QgeV91X25vX2VsaXNpb24KewogICAgaG9sZGVyPHB0cndyYXA+IGVsZW07Cn07Cgp0eXBlZGVmIHVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHlfdV9ub19lbGlzaW9uPiBteW1hcDsKCm15bWFwIGZvbygpOwoKaW50IG1haW4oKQp7CiAgICBhdXRvIG0gPSBmb28oKTsKICAgIG0gPSBmb28oKTsKICAgIHJldHVybiAwOwp9Cg==