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.

questionAnswers(2)

yourAnswerToTheQuestion