C++ typename as variable

thealch3m1st picture thealch3m1st · Jul 25, 2011 · Viewed 7.9k times · Source

Suppose I have a template class MyClass. Is it possible to store the type of the template as an variable of the class? If so how? I'm curious if it's possible to do something like this.

Template <typename T> class MyClass;
Template <typename T> class AnotherClass;

MyClass<int> myClassInstance;
AnotherClass<oneInstance.functionThatReturnsTheStoredTypeFromAnInstanceVariableOfMyClass()> anotherClassInstance;

Thanks in advance.

Answer

Puppy picture Puppy · Jul 25, 2011

They can be static variables, you can nest typedefs.

template<typename T> class MyClass {
public:
    typedef T type;
};
AnotherClass<MyClass<double>::type> anotherClassInstance;

However, accessing a member variable like you posted is impossible in C++.