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

<sizeof(T)> as inherited class template parameter in c++

本文关键字:继承 参数 作为 sizeof lt gt C++      更新时间:2023-10-16

我一直在尝试从用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吗?没有大小之分……'操作符,所以它可能与可变模板无关。是吗?谢谢。

因为optional_base不需要模板类型参数,而是模板值参数(类型为unsigned long)。