#include <iostream>
#include <type_traits>
template<typename T>
struct enable_shared_from_that
{
// put a member here
enable_shared_from_that()
{
static_assert(static_cast<enable_shared_from_that<T>*>((T*)0) == 0, "Not a public base of enable_shared_from_that");
}
};
struct X : /*private*/ enable_shared_from_that<X>
{
};
int main() {
X x;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgZW5hYmxlX3NoYXJlZF9mcm9tX3RoYXQKewoJLy8gcHV0IGEgbWVtYmVyIGhlcmUKCWVuYWJsZV9zaGFyZWRfZnJvbV90aGF0KCkKCXsKCQlzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGVuYWJsZV9zaGFyZWRfZnJvbV90aGF0PFQ+Kj4oKFQqKTApID09IDAsICJOb3QgYSBwdWJsaWMgYmFzZSBvZiBlbmFibGVfc2hhcmVkX2Zyb21fdGhhdCIpOwoJfQp9OwoKc3RydWN0IFggOiAvKnByaXZhdGUqLyBlbmFibGVfc2hhcmVkX2Zyb21fdGhhdDxYPgp7Cn07CgppbnQgbWFpbigpIHsKCVggeDsKfQo=