I have a problem with the following code:
class SymmetryTypes
{
public:
enum Type { REAL, COMPLEX, INTEGER, PATTERN, UNINITIALIZED };
void f() { cout << "SymmetryTypes::f() invoked" << endl; };
};
template <class T>
class EnumBase : public T
{
public:
EnumBase() /* : t_(T::UNINITIALIZED) */ { T::f(); }
private:
// T::Type t_;
};
int main(int argc, char* argv[])
{
EnumBase<SymmetryTypes> symmetry;
return 0;
}
It compiles, but when I uncomment it doesn't. It seems that I can access function members of base class T, but cannot access enum member and its values (also tried typedefs). Do you know why?