具有默认值的模板功能

时间:2019-01-20 20:02:53

标签: c++ templates

我有一个模板功能:

python3 -V

现在我可以打电话

template <typename T>
void foo(const T& container = {}) {
  // ... some implementation
}

由于我具有容器的默认值,因此我应该能够在没有任何参数的情况下进行调用。

foo<std::vector>(some_vector_param) or foo<std::map>(some_map_param)

但是在这一点上,编译器不知道如何翻译它,因为它可能是矢量或地图。一种解决方案是显式指定类型。

foo()

我有办法避免这种情况吗?如果缺少输入类型,可以让编译器使用向量吗?

1 个答案:

答案 0 :(得分:4)

模板参数也可以具有默认参数:

template <typename T = vector<int>>
void foo(const T& container = {}) {
  // ... some implementation
  }