#include <iostream>
namespace t1 {
struct nullopt_t{};
static const nullopt_t nullopt{};
template<typename T>
struct optional
{
optional() { std::cout << "optional()" << std::endl; }
optional(nullopt_t) { std::cout << "optional(nullopt)" << std::endl; }
};
}
namespace my_very_own {
using t1::nullopt;
using t1::optional;
}
int main() {
my_very_own::optional<int> opt1;
my_very_own::optional<int> opt2 = my_very_own::nullopt;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKbmFtZXNwYWNlIHQxIHsKCXN0cnVjdCBudWxsb3B0X3R7fTsKCXN0YXRpYyBjb25zdCBudWxsb3B0X3QgbnVsbG9wdHt9OwoKCXRlbXBsYXRlPHR5cGVuYW1lIFQ+CglzdHJ1Y3Qgb3B0aW9uYWwKCXsKCQlvcHRpb25hbCgpIHsgc3RkOjpjb3V0IDw8ICJvcHRpb25hbCgpIiA8PCBzdGQ6OmVuZGw7IH0KCQlvcHRpb25hbChudWxsb3B0X3QpIHsgc3RkOjpjb3V0IDw8ICJvcHRpb25hbChudWxsb3B0KSIgPDwgc3RkOjplbmRsOyB9Cgl9OwkKfQoKbmFtZXNwYWNlIG15X3Zlcnlfb3duIHsKCXVzaW5nIHQxOjpudWxsb3B0OwoJdXNpbmcgdDE6Om9wdGlvbmFsOwp9IAoKaW50IG1haW4oKSB7CglteV92ZXJ5X293bjo6b3B0aW9uYWw8aW50PiBvcHQxOwoJbXlfdmVyeV9vd246Om9wdGlvbmFsPGludD4gb3B0MiA9IG15X3Zlcnlfb3duOjpudWxsb3B0OwoJcmV0dXJuIDA7Cn0=