Como faço para definir valores padrão de parâmetro que dependem de outros parâmetros?
O código a seguir compila e funciona conforme o esperado.
#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;
}
No entanto, gostaria que o valor padrão do parâmetro de tamanho fosse deduzido com base em um parâmetro anterior. Então, por exemplo:
void function(std::vector<int> vec, int size=vec.size());
Mas isso, no entanto, resulta em:
erro: a variável local "vec" pode não aparecer neste contexto
O que não me surpreende; Eu suponho que ele precisa saber o valor padrão em tempo de compilação. Então eu faço a função modelada? Como eu faria a função modelada de tal maneira que o parâmetro ainda é um int, e o vetor, ainda é um vetor de ints, e o parâmetro de tamanho é deduzido para ser o tamanho do vetor passado por padrão.
Eu não gostaria de ter que passar o tamanho do vetor durante a chamada de função.