使用typedef自动填充模板参数

时间:2015-03-23 23:43:50

标签: c++ templates

我有以下课程:template<typename Trait, Value> class Storage。在我使用此类的一个应用程序中,我想为Storage创建一个同义词,即#34;自动填充&#34;在ValueValueA。但是,由于该类在其他地方使用,因此在存储定义中将值设置为ValueA是没有意义的。

我试图在存储的标头中创建一个typedef,但是我一直遇到编译器错误。基本上我想要完成的是:

template<typename trait>
typedef Storage<trait, ValueA> MyStorage<trait>;

这样我可以使用不同的特征,但是会自动设置存储的值。我尝试这种方法时遇到的错误是错误:&#39; typedef&#39;

的模板声明

C ++ 03中是否存在此限制?

1 个答案:

答案 0 :(得分:0)

最简单的解决方法是简单地使用新类

 template<typename trait> 
 struct DefStorage : Storage<trait,ValueA> 
 {};

技术上你必须要小心,因为这很容易转换为Storage<trait,ValueA>*,如果你delete,那么DefStorage的析构函数不会被调用,这是技术上未定义的行为。所以要小心。但只要你没有堆分配这些,就没有什么值得关注的了。