在模板专用化中使用 typedef
Using typedef inside template specializations
我是 c++ 的新手,我正在尝试编写一个包含 char 或 int 类型的附加模板。之后,我想在其他模板中使用此模板来选择数据类型,具体取决于输入数据填充。
template <bool isPadding>
class PaddingTemplate;
template <>
class PaddingTemplate<false>
{
public:
typedef char Type;
};
template <>
class PaddingTemplate<true>
{
public:
typedef int Type;
};
template <class T, bool Padding = ((sizeof(T) % sizeof(int)) == 0)>
class ObjectComparator
{
private:
typedef PaddingTemplate<Padding> PaddingTrick;
typename PaddingTrick::Type DataType;
DataType Shadow[sizeof(T) / sizeof(DataType)];
};
我收到此编译器错误
编译器消息
如何解决问题并根据数据填充自动选择数据类型?
DataType
实际上不是一种类型。这是PaddingTrick::Type
的一个实例,这就是为什么下一行给你一个错误。您需要做:
typedef typename PaddingTrick::Type DataType;
相关文章:
- C++:TypeDef使用元组
- .cpp和.h文件中的模板专用化声明
- 调用专用模板时出错"no matching function for call to [...]"
- 模板专用化(按容器):value_type
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 为什么在使用typedef时类推导指南会失败
- 静态数据成员模板专用化的实例化点在哪里
- 特征 3 类的模板专用化
- Visual Studio 2017 不允许我创建 C++ 专用模板
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 尝试根据类中 typedef 的存在来专门化模板函数
- 具有常量引用参数的函数模板专用化
- 使用其他模板的模板专用化
- 如何重新定义MPI_FLOAT,MPI_DOUBLE以 typedef 的方式
- typedef 枚举和枚举类有什么区别?
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 嵌套模板显式专用化
- 如何检查模板专用化是否是基本模板的子类?
- 在类模板中使用 typedef 时出错
- 在模板专用化中使用 typedef