Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ > Re: Overload re...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 4 of 11 Topic 45791 of 47031
Post > Topic >>

Re: Overload resolution and copy constructors that take non-const

by Branimir Maksimovic <bmaxa@[EMAIL PROTECTED] > May 7, 2008 at 06:21 AM

On May 7, 2:59=A0pm, "Victor Bazarov" <v.Abaza...@[EMAIL PROTECTED]
> wrote:
> Branimir Maksimovic wrote:
> > ....
> > It isn;t clear to me following example:
>
> > class A{
> > public:
> > =A0 A(){}
> > =A0 A(A&){}
> > };
>
> > A foo(){ return A(); }
>
> > int main()
> > {
> > =A0 A a;
> > =A0 a =3D foo();
> > }
>
> > g++ gives strange error:
>
> > cctor.cpp: In function =91A foo()=92:
> > cctor.cpp:7: error: no matching function for call to =91A::A(A)=92
> > cctor.cpp:4: note: candidates are: A::A(A&)
> > cctor.cpp: In function =91int main()=92:
> > cctor.cpp:12: error: no matching function for call to =91A::A(A)=92
> > cctor.cpp:4: note: candidates are: A::A(A&)
>
> Returning a tem****ary from 'foo' requires copy-constructing
> another tem****ary (allowed to be optimized away, but semantially
> should still be possible). =A0But the only copy c-tor in 'A' takes
> a ref to non-const A. =A0The ref argument for 'A(A&)' cannot be
> bound to the tem****ary, and that would probably be a clearer
> message...
I don;t think that's the case since g++ gives proper
error if, for example, ordinary function foo takes non const reference
to tem****ary.In this case g++ really wants A(A),
I think. But then again, you may be right, it's just
strange error.

What about
A foo()
{
  A a;
  return a;
}
A a;
a =3D foo();
Is compiler obliged to call copy constructor?

>
>
>
> > I don;t have msvc handy but I think saw somewhere,
> > that, it compiles without error.
>
> .. unless you disable language extensions ..

I think that msvc issues warning if that's the case.
But I am really not sure, could be what you say,
so someone with msvc with disabled extensions
could confirm that this does not compile (second version
of foo that does not returns tem****ary perhaps).

Greetings, Branimir.
 




 11 Posts in Topic:
Overload resolution and copy constructors that take non-const re
Anthony Williams <anth  2008-05-07 10:44:48 
Re: Overload resolution and copy constructors that take non-cons
Branimir Maksimovic <b  2008-05-07 05:54:26 
Re: Overload resolution and copy constructors that take non-cons
"Victor Bazarov"  2008-05-07 08:59:18 
Re: Overload resolution and copy constructors that take non-cons
Branimir Maksimovic <b  2008-05-07 06:21:21 
Re: Overload resolution and copy constructors that take non-cons
Branimir Maksimovic <b  2008-05-07 06:40:00 
Re: Overload resolution and copy constructors that take non-cons
"Victor Bazarov"  2008-05-07 10:25:23 
Re: Overload resolution and copy constructors that take non-cons
dizzy <dizzy@[EMAIL PR  2008-05-07 17:47:00 
Re: Overload resolution and copy constructors that take non-cons
"Victor Bazarov"  2008-05-07 11:33:53 
Re: Overload resolution and copy constructors that take non-cons
Branimir Maksimovic <b  2008-05-07 15:18:46 
Re: Overload resolution and copy constructors that take non-cons
"Alf P. Steinbach&qu  2008-05-08 00:34:33 
Re: Overload resolution and copy constructors that take non-cons
James Kanze <james.kan  2008-05-09 03:28:52 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Fri Jul 25 15:37:43 CDT 2008.