如何将现有模板类部分专门化为新类型?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将现有模板类部分专门化为新类型?相关的知识,希望对你有一定的参考价值。
----重要提示:这不是部分模板专业化的解决方案,而是我在不知情的情况下寻找类型别名。对困惑感到抱歉 - - -
我想做的事
我想专门化boost :: unordered_multimap基本上只需要将要存储的数据,因此永久地使键成为boost :: uuids :: uuid。
目前的尝试
template<class t>
boost::unordered_multimap<boost::uuids::uuid, t, boost::hash<boost::uuids::uuid>> unorderedUUIDMultMap;'
Here is the usage:
unorderedUUIDMultMap<int> uuidMultMap; //Should create a mutlimap storing ints.
这是错误:
main.cpp|24|error: expected ';' before 'uuidMultMap'|
我也尝试在模板之前使用“typedef”,但这也没有用。
我该如何正确地做这个简单的快捷方式?
答案
你想要的不是局部特化,而是模板类型别名:
template <typename T> using my_mmap = boost::unordered_multimap<boost::uuids::uuid, T, boost::hash<boost::uuids::uuid>>;
以上是关于如何将现有模板类部分专门化为新类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 std::unordered_map 部分专门化为我的模板类的成员?
C++,2参数类模板的部分特化:无法将函数定义与现有声明匹配