More enum/template problems

Todd Veldhuizen todd@p200.cybervision.com
Tue Sep 9 06:54:00 GMT 1997


Jody, thanks for patching that enum problem.  Here's another one
which is eerily similar.  It fails with the 970907 snapshot.

bug27.cpp:31: `a' is not a member of type `Y<X,X,X>'
bug27.cpp:31: enumerator value for `a' not integer constant



template<int N1, int N2>
struct meta_max {
    enum { max = (N1 > N2) ? N1 : N2 };
};

struct X {
    enum { 
       a = 0, 
       n = 0 
    };
};

template<class T1, class T2, class T3>
struct Y {

    enum { 
       a = T1::a + T2::a + T3::a,
       n = meta_max<meta_max<T1::n,T2::n>::max, T3::n>::max
    };
};

template<class T>
struct Z {
    enum { 
       a = T::a,
       n = T::n 
    };
};

Z<Y<X,X,X> > z;




More information about the Gcc-bugs mailing list