This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Passing a reference to a value returned by a function


Thanks, it works with the const qualifier.
My next question would have been about how much visualc's behavior respects 
the standard, thanks for answering that in advance ;)

On Tuesday 11 March 2003 18:16, Oliver Kullmann wrote:
> On Tue, Mar 11, 2003 at 05:56:34PM +0200, Mihnea Balta wrote:
> > Mailing-List: contact gcc-help-help at gcc dot gnu dot org; run by ezmlm
> > Precedence: bulk
> > List-Unsubscribe:
> > <mailto:gcc-help-unsubscribe-O dot Kullmann=swansea dot ac dot uk at gcc dot gnu dot org>
> > List-Archive: <http://gcc.gnu.org/ml/gcc-help/>
> > List-Post: <mailto:gcc-help at gcc dot gnu dot org>
> > List-Help: <mailto:gcc-help-help at gcc dot gnu dot org>
> > Delivered-To: mailing list gcc-help at gcc dot gnu dot org
> > From: Mihnea Balta <dark_lkml at mymail dot ro>
> > To: gcc-help at gcc dot gnu dot org
> > Date: Tue, 11 Mar 2003 17:56:34 +0200
> > Subject: Passing a reference to a value returned by a function
> > X-Spam-Status: No, hits=0.0 required=8.0
> > 	tests=none
> > 	version=2.50
> > X-Spam-Level:
> > X-Spam-Checker-Version: SpamAssassin 2.50 (1.173-2003-02-20-exp)
> > X-MIME-Autoconverted: from quoted-printable to 8bit by cs-svr1.swan.ac.uk
> > id h2BFw0uE014171
> >
> > Hi.
> >
> > I have this piece of code (excuse the long function names, it's example
> > code
> >
> > :) ):
> >
> > #include <stdio.h>
> >
> > struct type_t{
> >     int a, b, c;
> > };
> >
> > type_t function_returning_struct(){
> >     type_t  a;
> >
> >     a.a = 1;
> >     return a;
> > }
> >
> > int function_taking_reference(type_t& a){
> >     if(a.a == 1)
> >         return 1;
> >     else
> >         return 0;
> > }
> >
> > int main(){
> >     printf("%d\n",
> > function_taking_reference(function_returning_struct())); return 1;
> > }
> >
> > I'm trying to port code written like this from visualc to gcc. I suppose
> > that visualc compiles the above piece of code because it creates a
> > temporary type_t that holds the return of function_returning_struct(),
> > and passes a reference to that to function_taking_reference(). However,
> > gcc 3.2.2 won't compile that kind of code.
> >
> > Is there any way to make gcc work with such code? I'm asking because it's
> > in a lot of places, and adding a temp var by hand to all the places where
> > this stuff occurs would be a pain.
> >
> > Thanks.
>
> Hi,
>
> I hope very much that there is no way to make gcc to work with such code,
> since it doesn't make sense to pass temporary values by reference, and the
> standards explicitely forbids it. But you don't have to add variables ---
> just add the const qualifier to the argument type of
> function_taking_reference, and you have perfectly legal C++ code. Doing so
> doesn't change your code, but just increases safety.
>
> Oliver
>
>
> ------------------------------------------------------------------------
> http://felicitari.mymail.ro/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]