相关疑难解决方法(0)

带有默认参数的C++模板模板参数

我有一个类需要使用某种地图.默认情况下,我想使用std::map,但我也希望让用户能够根据需要使用不同的东西(例如std::unordered_map,甚至用户创建一个).

所以我的代码看起来像

#include <map>

template<class Key, template<class, class> class Map = std::map>
class MyClass {
};

int main() {
  MyClass<int> mc;
}
Run Code Online (Sandbox Code Playgroud)

但是,g ++抱怨道

test.cpp:3:61: error: template template argument has different template parameters than its corresponding template template parameter
template<class Key, template<class, class> class Map = std::map>
                                                            ^
test.cpp:8:14: note: while checking a default template argument used here
  MyClass<int> mc;
  ~~~~~~~~~~~^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/map:781:1: note: too many template parameters in template template argument
template <class _Key, class _Tp, …
Run Code Online (Sandbox Code Playgroud)

c++ templates

8
推荐指数
1
解决办法
1484
查看次数

标签 统计

c++ ×1

templates ×1