我有一个模板功能:
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()
我有办法避免这种情况吗?如果缺少输入类型,可以让编译器使用向量吗?
答案 0 :(得分:4)
模板参数也可以具有默认参数:
template <typename T = vector<int>>
void foo(const T& container = {}) {
// ... some implementation
}