#include <iostream>
#include <iterator>
#include <algorithm>
struct X
{
X() { std::cout << "X construct @" << (const void*)this << '\n'; }
~X() { std::cout << "X destruct @" << (const void*)this << '\n'; }
};
std::ostream& operator<<(std::ostream& s, const X&)
{
return s << "X\n";
}
int main()
{
std::initializer_list<X> b;
{
std::initializer_list<X> a{X()};
b = a;
std::copy( a.begin(), a.end(), std::ostream_iterator<X>(std::cout, "") );
}
std::copy( b.begin(), b.end(), std::ostream_iterator<X>(std::cout << '\n', "") );
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CgpzdHJ1Y3QgWAp7CiAgICBYKCkgeyBzdGQ6OmNvdXQgPDwgIlggY29uc3RydWN0IEAiIDw8IChjb25zdCB2b2lkKil0aGlzIDw8ICdcbic7IH0KICAgIH5YKCkgeyBzdGQ6OmNvdXQgPDwgIlggZGVzdHJ1Y3QgQCIgPDwgKGNvbnN0IHZvaWQqKXRoaXMgPDwgJ1xuJzsgfQp9OwoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgcywgY29uc3QgWCYpCnsKICAgIHJldHVybiBzIDw8ICJYXG4iOwp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxYPiBiOwoKICAgIHsKICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8WD4gYXtYKCl9OwogICAgICAgIGIgPSBhOwogICAgICAgIHN0ZDo6Y29weSggYS5iZWdpbigpLCBhLmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8WD4oc3RkOjpjb3V0LCAiIikgKTsKICAgIH0KCiAgICBzdGQ6OmNvcHkoIGIuYmVnaW4oKSwgYi5lbmQoKSwgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yPFg+KHN0ZDo6Y291dCA8PCAnXG4nLCAiIikgKTsKfQ==