On 04/25/2010 04:44 AM, Samkit Jain wrote: > Yes my question is why does'nt assignment operator work out of the box ? But why should it? You haven't defined one. Andrew. P.S. Please don't top-post. > On Sun, Apr 25, 2010 at 12:02 AM, Andrew Haley <aph@xxxxxxxxxx> wrote: >> On 04/24/2010 07:07 PM, Andrew Haley wrote: >>> On 04/24/2010 06:30 PM, Samkit Jain wrote: >>>> template<class T> >>>> MyClass >>>> { >>>> public: >>>> MyClass() : m_data(10) { } >>>> operator T&() { return m_data; } >>>> private: >>>> T m_data; >>>> }; >>> >>> I think this example does what you want: >>> >>> template<class T> class >>> MyClass >>> { >>> public: >>> MyClass() : m_data(10) { } >>> operator T&() { return m_data; } >>> T& operator= (const T &t) { m_data = t; return *this; } >>> private: >>> T m_data; >>> }; >> >> I'm sorry, I think I misunderstood your question. You're asking why >> >> instance++; >> >> works, but, say >> >> instance = instance + 1; >> >> doesn't. Apologies. >> >> Andrew. >>