This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
C++v2,96:member template conversion not implicit
- To: gcc-bugs at gcc dot gnu dot org
- Subject: C++v2,96:member template conversion not implicit
- From: Larry Evans <jcampbell3 at prodigy dot net>
- Date: Sun, 02 Jul 2000 09:25:07 -0500
The member template conversion operator in the following code should be
implicitly called in the
following code, but it's not.
------------------ cut here ----------------
make bugrep
uname -a
Linux localhost.localdomain 2.2.13-4mdk #1 Tue Sep 7 18:23:11 CEST 1999
i586 unknown
../../../snap/bin/g++ -v
Reading specs from
../../../snap/bin/../lib/gcc-lib/i586-pc-linux/2.96/specs
gcc version 2.96 20000625 (experimental)
../../../snap/bin/g++ -E -imacros .mac main.cpp
# 1 "main.cpp"
enum
TestEnumFlag
{ FlagNo
, FlagYes
};
struct
SubjTop
{
};
template
<TestEnumFlag TEST_FLAG
>
struct
Subj1
: public SubjTop
{
template
<TestEnumFlag AS_TF
>
operator
Subj1<AS_TF>&
(void)
{ SubjTop&t=*this
; return static_cast<Subj1<AS_TF>&>(t)
;}
};
int
main(void)
{
; typedef Subj1<FlagYes> Subj1Yes
; typedef Subj1<FlagNo> Subj1No
; Subj1Yes x
; Subj1No&y=x
; return 0
;}
../../../snap/bin/g++ -c -imacros .mac main.cpp
main.cpp: In function `int main ()':
main.cpp:38: conversion from `main ()::Subj1Yes' to non-scalar type
`Subj1<FlagNo>' requested
main.cpp:38: cannot initialize `main ()::Subj1No &' from `main
()::Subj1Yes'
make: *** [compile] Error 1