使用typedefs自动填充模板参数
Using typedefs to autofill a template argument
我有以下类:template<typename Trait, Value> class Storage
。在我使用此类的一个应用程序中,我想为Storage
创建一个同义词,在Value
中"自动填充"为ValueA
。但是,由于该类在其他地方使用,因此在Storage的定义中将Value设置为ValueA
是没有意义的。
我曾试图在Storage的头中创建一个typedef,但我一直遇到编译器错误。从本质上讲,我试图实现的是:
template<typename trait>
typedef Storage<trait, ValueA> MyStorage<trait>;
这样我就可以使用不同的特征,但可以自动设置存储的值。当我尝试这种方法时,我得到的错误是错误:"typedef"的模板声明
在C++03中是否存在这个限制?
最简单的解决方法是简单地使用一个新的类
template<typename trait>
struct DefStorage : Storage<trait,ValueA>
{};
从技术上您必须小心,因为这很容易转换为Storage<trait,ValueA>*
,如果您delete
,则不会调用DefStorage
的析构函数,这在技术上是未定义的行为。所以要小心。但是,只要您不进行堆分配,就没有什么可担心的。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 如何将类成员方法的参数列表自动填充写入可变参数?
- 是否可以在不填充自己的参数的情况下将模板函数作为参数传递?
- 通过跳过可选参数来填充参数包
- 已将 QSet 填充为可选参数
- 在C++中将浮点数组的参数填充为 float*
- 如何使填充数组的函数发送到函数?而不是其参数中的数组
- 部分填充的模板作为模板模板的参数
- 如何遍历可变参数模板以填充 POD 数组
- 使用typedefs自动填充模板参数
- 如何基于构造函数参数填充常量成员数组
- 在可变参数模板中使用填充程序的更简洁方法
- 是fill_n,并填充相同的函数,但具有不同的参数重载
- 我们是否可以创建一个类似scanf的函数,当所有参数都填充时返回true,否则返回false,而不循环遍历所有变量?
- 为零填充宽度和精度与要打印的整型参数相同
- 如何用可变参数模板参数中的 typeid 填充向量