以下代码按预期编译和工作。
#include <vector>
void function(std::vector<int> vec, int size=1);
int main(){
std::vector<int> vec = {1,2,3};
function(vec);
}
void function(std::vector<int> vec, int size){
//code..
return;
}
但是,我希望根据先前的参数推导出 size 参数的默认值。例如:
void function(std::vector<int> vec, int size=vec.size());
但这会导致:
错误:局部变量“vec”可能不会出现在此上下文中
这并不让我感到惊讶;我假设它需要在编译时知道默认值。那么我是否将函数模板化?我如何使函数模板化,使得参数仍然是一个 int,而向量仍然是一个 int 向量,并且默认情况下,size 参数被推断为传入的向量的大小。
我不想在函数调用期间传递向量的大小。