<sizeof(t)>作为c ++中的继承类模板参数

时间:2015-07-30 07:27:58

标签: c++

我一直试图从一个简单的用C编写的自制游戏引擎转换到C ++,并且遇到了Mike McShaffry(Game Coding Complete)的一本好书。 对于全能的bios的爱,我无法围绕他的“可选模板类”,即这段代码:

class optional_empty { };

template <unsigned long size>
class optional_base
{
public:
     // some code here
};

template <class T>
class optional : public optional_base<sizeof(T)>
{
public:
     // some code here
};

为什么'sizeof(T)'在继承时用作模板参数,而不仅仅是普通的'T'? 是否可以获得动态尺寸的T? 没有'sizeof ...'运算符,因此它可能与可变参数模板无关。 或者是吗? 感谢。

1 个答案:

答案 0 :(得分:2)

因为optional_base不期望模板类型参数而是模板值参数(类型unsigned long)。

相关问题