Как установить значения параметров по умолчанию, которые зависят от других параметров?

Следующий код компилируется и работает как положено.

#include 

void function(std::vector vec, int size=1);

int main(){
    std::vector vec = {1,2,3};
    function(vec);
}


void function(std::vector vec, int size){
    //code..
    return;
}

Тем не менее, я хотел бы, чтобы параметр размераЗначение по умолчанию, которое должно быть выведено на основе предыдущего параметра. Так, например:

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

Но это, однако, приводит к:

ошибка: локальная переменная ‘VEC» может не отображаться в этом контексте

Который нене удивляй меня; Я предполагаю, что он должен знать значение по умолчанию во время компиляции. Так я делаю функцию шаблонной? Как бы я сделал функцию шаблонной таким образом, чтобы параметр по-прежнему представлял собой int, а вектор по-прежнему представлял собой вектор целых чисел, а параметр размера выводился как переданный в векторе?Размер по умолчанию.

Я не хотел бы передавать размер вектора во время вызова функции.

Ответы на вопрос(2)

Ваш ответ на вопрос