我一直试图从一个简单的用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 ...'运算符,因此它可能与可变参数模板无关。 或者是吗? 感谢。
答案 0 :(得分:2)
因为optional_base
不期望模板类型参数而是模板值参数(类型unsigned long
)。