template <typename T>
auto make_obj(T t);
template <typename T>
class Obj {
private:
T & t;
Obj (T & t) : t(t) { }
Obj() = delete;
friend auto make_obj<T>(T t);
};
template <typename T>
auto make_obj(T t) {
return Obj<T>{t};
}
int main() {
make_obj(1);
return 0;
}
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmF1dG8gbWFrZV9vYmooVCB0KTsKICAgIAp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KY2xhc3MgT2JqIHsKcHJpdmF0ZToKICAgIFQgJiB0OwogICAgT2JqIChUICYgdCkgOiB0KHQpIHsgfQogICAgT2JqKCkgPSBkZWxldGU7CgogICAgZnJpZW5kIGF1dG8gbWFrZV9vYmo8VD4oVCB0KTsKfTsKICAgIAp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KYXV0byBtYWtlX29iaihUIHQpIHsKICAgIHJldHVybiBPYmo8VD57dH07Cn0KICAgIAppbnQgbWFpbigpIHsKICAgIG1ha2Vfb2JqKDEpOwogICAgcmV0dXJuIDA7Cn0=