#include <iostream>
using namespace std;
template< typename T > class buffer
{
public:
T * data;
buffer(){data = new T[10];}
const T & operator [] ( size_t i) const {return data[i];}
T & operator [] ( size_t i){return data[i];}
operator const T * () const;
operator T * ();
};
int main() {
buffer< int > buf;
buf[ 0 ] = 5; // Generates an error
std::cout<< buf[0];
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBjbGFzcyBidWZmZXIKewogICAgcHVibGljOgoJVCAqIGRhdGE7CglidWZmZXIoKXtkYXRhID0gbmV3IFRbMTBdO30KICAgIGNvbnN0IFQgJiBvcGVyYXRvciBbXSAoIHNpemVfdCBpKSBjb25zdCB7cmV0dXJuIGRhdGFbaV07fQogICAgICAgICAgVCAmIG9wZXJhdG9yIFtdICggc2l6ZV90IGkpe3JldHVybiBkYXRhW2ldO30KCiAgICBvcGVyYXRvciBjb25zdCBUICogKCkgY29uc3Q7CiAgICBvcGVyYXRvciAgICAgICBUICogKCk7Cn07CgppbnQgbWFpbigpIHsKCWJ1ZmZlcjwgaW50ID4gYnVmOwogICAgYnVmWyAwIF0gPSA1OyAvLyBHZW5lcmF0ZXMgYW4gZXJyb3IKICAgIHN0ZDo6Y291dDw8IGJ1ZlswXTsKCXJldHVybiAwOwp9