#include <iostream>
using namespace std;
template<typename T> class SmartPtr
{
public:
SmartPtr(T* data): member(data) {}
operator T * ()
{
cout << "operator T* called" << endl;
return member;
}
T* member;
};
int main() {
int x = 10;
SmartPtr<int> pT = SmartPtr<int>(&x);
static_cast<int*>(pT);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgU21hcnRQdHIKewpwdWJsaWM6CglTbWFydFB0cihUKiBkYXRhKTogbWVtYmVyKGRhdGEpIHt9CglvcGVyYXRvciBUICogKCkgCgl7CgkJY291dCA8PCAib3BlcmF0b3IgVCogY2FsbGVkIiA8PCBlbmRsOwoJCXJldHVybiBtZW1iZXI7IAoJfQoJVCogbWVtYmVyOwp9OwoKaW50IG1haW4oKSB7CglpbnQgeCA9IDEwOwoJU21hcnRQdHI8aW50PiBwVCA9IFNtYXJ0UHRyPGludD4oJngpOwoJc3RhdGljX2Nhc3Q8aW50Kj4ocFQpOwoJcmV0dXJuIDA7Cn0=