[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug c++/14502] [3.3 Regression] g++ compile fails "no matching function
From: |
giovannibajo at libero dot it |
Subject: |
[Bug c++/14502] [3.3 Regression] g++ compile fails "no matching function" using forward declaration of class involving inheritance |
Date: |
11 Mar 2004 04:57:27 -0000 |
------- Additional Comments From giovannibajo at libero dot it 2004-03-11
04:57 -------
[expr.cast]/6: "The operand of a cast using the cast notation can be an rvalue
of type pointer to incomplete class type. The destination type of a cast
using the cast notation can be pointer to incomplete class type. In such
cases, even if there is a inheritance relationship between the source and
destination classes, whether the static_cast or reinterpret_cast interpretation
is used is unspecified."
It looks like both behaviour are actually valid. GCC 3.3.3 uses a static_cast
and fails. The other GCCs use a reinterpret_cast and succeeds.
I think it's worth to keep this bug open as an enhancement request for two
reasons:
- 3.3.4 could be changed to use reinterpret_cast to match 3.4 behaviour. This
would also restore 3.2 behaviour. I agree it is not strictly needed, but if
someone is able to do a patch for this, why not.
- If my interpretation is correct and 3.4/3.5 are really using a
reinterpret_cast, this is silently creating segfaulting code. We could issue a
warning for the user in this case *if* we detect later that the two types are
related (when both are completed).
--
What |Removed |Added
----------------------------------------------------------------------------
CC| |giovannibajo at libero dot
| |it
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14502