我在 C++ 中使用模板元编程从使用类型列表生成类的层次结构,如下所示:
//! Basic typelist class
template<class H, class T>
class Typelist
{
public:
typedef H Head;
typedef T Tail;
};
//! Terminating type
class NullType {};
//! Forward declaration
template<class Types>
class Recur;
//! Specialisation to terminate the recursion
template<>
class Recur<NullType>
{
};
//! General recursive class
template<class Types>
class Recur: public Recur<typename Types::Tail>
{
};
// Dummy classes
class Type1{};
class Type2{};
class Type3{};
int main()
{
// Defines the typelist
typedef Typelist<Type1,Typelist<Type2,Typelist<Type3,NullType>>> Types;
// Instantiate the recursion
Recur<Types> recur;
return 1;
}
这将产生一个类层次结构,如下所示:
Recur<Typelist<Type2,Typelist<Type3,NullType>>>
源自:
Recur<Typelist<Type3,NullType>>
源自:
Recur<NullType> (base class)
问题:Visual Studio 2010 编译器是否对使用这种递归技术的类派生深度有任何限制?换句话说,如果我的类型列表包含 N 个类型,即使 N 等于 100,000,上面的代码是否会编译和构造 N 个类?