This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
const_cast problem?
- To: egcs-bugs at cygnus dot com
- Subject: const_cast problem?
- From: scott snyder <snyder at d0sgif dot fnal dot gov>
- Date: Tue, 25 Nov 1997 17:18:43 -0600 (CST)
hi -
egcs 971122 (i586-pc-linux-gnu) gives warnings on the following source:
-- tc.cc --------------------------------------------------------------------
int*& foo (int const *& x)
{
return const_cast<int*&> (x);
}
-----------------------------------------------------------------------------
$ gcc -c tc.cc
tc.cc: In function `int *& foo(const int *&)':
tc.cc:4: warning: converting to `int *' from `const int *' discards const
tc.cc:4: warning: initializing non-const `int *&' with `const int *' will use a temporary
tc.cc:4: warning: returning reference to temporary
If the references in this example are changed to pointers (change
all `&''s to `*'), no warnings result.
I think this is incorrect according to CD2 5.2.11, para 4:
4 An lvalue of type T1 can be explicitly converted to an lvalue of type
T2 using the cast const_cast<T2&> (where T1 and T2 are object types)
if a pointer to T1 can be explicitly converted to the type pointer to
T2 using a const_cast. The result of a reference const_cast refers to
the original object.
thanks,
sss