有没有办法从模板专业化模板中获取模板?例如。 std::unordered_map
从std::unordered_map<char, char>
类型的变量作为模板模板参数传递。模板专业化模板
小例子:
#include <unordered_map>
template <template <class ...> class t_map>
class A
{
public:
typedef t_map <int, int> map_type;
};
int main(int argc, char const **argv)
{
std::unordered_map<char, char> map;
// decltype yields std::unordered_map<char, char> (as expected).
typename A<decltype(map)>::map_type map_2;
return 0;
}
这取决于你想用模板做什么。一般来说,你可以传递类型而不是模板。你可能能够取代模板参数。你能给更多的上下文吗? – MarkusParker
我有几个类(为了多态性)采用模板模板参数并从中进行专门化。这些类为地图类型容器提供了一个最小的接口。一个需要一个'std :: map',另一个'std :: vector'并且实现完美的哈希。为了测试这些类的许多专业化,编写一个函数只需要一个模型容器(例如'std :: map'),然后将其传递给我的类就可以了。 –
tsnorri