From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22981 invoked by alias); 25 Apr 2010 13:39:17 -0000 Received: (qmail 22969 invoked by uid 22791); 25 Apr 2010 13:39:17 -0000 X-SWARE-Spam-Status: No, hits=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 25 Apr 2010 13:39:12 +0000 Received: from int-mx08.intmail.prod.int.phx2.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o3PDdBPY030655 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 25 Apr 2010 09:39:11 -0400 Received: from zebedee.pink (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx08.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o3PDd9MP026947; Sun, 25 Apr 2010 09:39:10 -0400 Message-ID: <4BD445FD.5000003@redhat.com> Date: Sun, 25 Apr 2010 17:13:00 -0000 From: Andrew Haley User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091209 Fedora/3.0-4.fc12 Thunderbird/3.0 MIME-Version: 1.0 To: gcc-help@gcc.gnu.org Subject: Re: Overloading reference operator References: <4BD33350.4050603@redhat.com> <4BD33928.7020600@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org X-SW-Source: 2010-04/txt/msg00270.txt.bz2 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 wrote: >> On 04/24/2010 07:07 PM, Andrew Haley wrote: >>> On 04/24/2010 06:30 PM, Samkit Jain wrote: >>>> template >>>> 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 >>> 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. >>