C++ 具有默认值的模板函数

C++ 具有默认值的模板函数,c++,templates,C++,Templates,我有一个模板函数: template <typename T> void foo(const T& container = {}) { // ... some implementation } 但此时,编译器不知道如何翻译它,因为它可能是一个向量或一个映射。一种解决方案是显式指定类型 foo<vector>() foo() 我有没有办法避免这种情况?如果输入类型丢失,我可以让编译器使用vector吗 模板参数也可以有默认参数: template <

我有一个模板函数:

template <typename T>
void foo(const T& container = {}) {
  // ... some implementation
}
但此时,编译器不知道如何翻译它,因为它可能是一个向量或一个映射。一种解决方案是显式指定类型

foo<vector>()
foo()

我有没有办法避免这种情况?如果输入类型丢失,我可以让编译器使用vector吗

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

template <typename T = vector<int>>
void foo(const T& container = {}) {
  // ... some implementation
  }
模板
void foo(const T&container={}){
//…一些实施
}
foo<vector>()
template <typename T = vector<int>>
void foo(const T& container = {}) {
  // ... some implementation
  }