如何将现有模板类部分专门化为新类型?

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参数类模板的部分特化:无法将函数定义与现有声明匹配

Java编程思想7.复用类

Excel 365 - 从现有表创建新表以将每月数据标准化为单独的行

部分模板类中不允许指向不完整类类型的指针

第59课 类模板深度剖析