------- Comment #1 from v dot lesk at ic dot ac dot uk 2007-03-02 17:02 -------
//Couldnt include attachment so attaching (short) code here. See next comment
for compiler output.
class A
{
private:
protected:
public:
};
template<typename T>
class C:
virtual public A
{
private:
protected:
public:
C();
template<typename T_OTHER>C(const C<T_OTHER>&);
C func(const class C<long>&)const;
operator bool(void)const;
};
template<typename T>
C<T>::
C()
{
}
template<typename T>
template<typename T_OTHER>
C<T>::
C(const C<T_OTHER>&a)
{
}
template<typename T>
C<T>
C<T>::
func(const class C<long>&)const
{
C<T>result;
return result;
}
template<typename T>
class D:
public C<T>
{
private:
protected:
public:
void func2(void);
};
template<typename T>
void
D<T>::
func2(void)
{
C<int>a;
a.func(a);
}
void func3(void)
{
C<int>a;
a.func(a);
}
int
main(int argc,const char*const*argv)
{
return 0;
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31027