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 2 of 11 Topic 45791 of 46738
Post > Topic >>

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

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

On May 7, 11:44=A0am, Anthony Williams <anthony_w....@[EMAIL PROTECTED]
> wrote:
> Hi,
>
> Should the following compile, and what should it print?

Really, I don't know.Sorry to answer question
with question.

>
> #include <memory>
> #include <iostream>
>
> void foo(std::auto_ptr<int> x)

Is same as
void foo(const std::auto_ptr<int> x) ?

> struct dummy
> {
> =A0 =A0 dummy(std::auto_ptr<int> const&)
> =A0 =A0 {}
>
> };
>
> void foo(dummy x)
=2E...
> int main()
> {
> =A0 =A0 std::auto_ptr<int> const x(new int);
> =A0 =A0 foo(x);
>
> }
>
> MSVC 9.0 and g++ 4.3 disagree.
>
> MSVC compiles it and prints "dummy const ref", which is what I expected.
>
> g++ refuses to compile it, saying that:
=2E...
It isn;t clear to me following example:

class A{
public:
  A(){}
  A(A&){}
};

A foo(){ return A(); }

int main()
{
  A a;
  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&)

I don;t have msvc handy but I think saw somewhere,
that, it compiles without error.
So, perhaps, as g++ wants A(A) this is similar to
your question.
As I never used non const reference copy constructor,
I'm really confused about it's behavior.
It seems to me that compiler writers are too ;)

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 Wed Jul 9 0:04:50 CDT 2008.