Jak ustawić domyślne wartości parametrów, które zależą od innych parametrów?

Poniższy kod kompiluje się i działa zgodnie z oczekiwaniami.

#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;
}

Chciałbym jednak, aby domyślna wartość parametru wielkości została wydedukowana na podstawie poprzedniego parametru. Na przykład:

void function(std::vector<int> vec, int size=vec.size());

Ale to jednak powoduje:
error: lokalna zmienna „vec” może nie pojawić się w tym kontekście

Co mnie nie dziwi; Zakładam, że musi znać wartość domyślną w czasie kompilacji. Czy sprawię, że funkcja będzie szablonowana? W jaki sposób uczyniłbym funkcję szablonowaną w taki sposób, że parametr nadal jest int, a wektor nadal jest wektorem ints, a parametr wielkości jest domyślnie wydedukowany jako wielkość w wektorze.

Nie chciałbym przekazywać rozmiaru wektora podczas wywołania funkcji.

questionAnswers(2)

yourAnswerToTheQuestion