c++/6272: GCC 2.95 fail
mantonenco@yahoo.com
mantonenco@yahoo.com
Fri Apr 12 06:26:00 GMT 2002
>Number: 6272
>Category: c++
>Synopsis: GCC 2.95 fail
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Apr 12 06:26:02 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Antonenco Mihai
>Release: gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
Suse 7.3
>Description:
mantonenco@linux1:/home/mantonenco/work/Test > gcc linuxProblem.cpp
linuxProblem.cpp: In function `int main()':
linuxProblem.cpp:23: initialization of non-const reference type `struct A &'
linuxProblem.cpp:23: from rvalue of type `A'
linuxProblem.cpp:10: in passing argument 1 of `A::operator =(A &)'
>How-To-Repeat:
// I had this problem when I worked with auto_ptr<AType>
// and tried to make a resource transfer: ptr = f()
// The solution that I was forced to use was:
// auto_ptr<AType> tempPtr = f();
// ptr = tempPtr;
// This solution doesn'd look good !
struct A
{
A& operator=(A& a) { return *this; };
};
A f()
{
A a;
return a;
};
int main()
{
A a;
a = f();
return 0;
};
>Fix:
I had to replace in my code:
ptr = f();
with
auto_ptr<AType> tempPtr = f();
ptr = tempPtr;
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list