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

标签 c++

我一直在尝试从一个简单的用 C 编写的自制游戏引擎过渡到 C++,并偶然发现了 Mike McShaffry 的一本好书(游戏编码完成)。 为了全能的 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...”运算符,因此它可能与可变参数模板无关。 或者是吗? 谢谢。

最佳答案

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

关于c++ - <sizeof(T)> 作为 C++ 中的继承类模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31717628/

相关文章:

c++ - 控制帧速率的常用方法是什么?

c++ - 使用模板元编程实现 std::all_of 的静态版本?

c++ - 在同一端口上发送和接收 udp 数据包

c++ - 不可变数据结构还是 const 变量?

c++ - int arr[ ] 是有效的 C++ 吗?

c++ - 用字符串中的空格替换符号

c++ - 这个结构是如何被引用的?什么是冒号(:) at the bottom?

派生类中的 C++ 赋值运算符

c++ - OpenCV copyTo() 掩码错误

c++ - 〜(代字号)在c++中的scanf函数之前意味着什么?