Wie setze ich Parameter-Standardwerte, die von anderen Parametern abhängen?

Der folgende Code wird wie erwartet kompiliert und funktioniert.

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

Ich möchte jedoch, dass der Standardwert des Größenparameters auf der Grundlage eines vorherigen Parameters abgeleitet wird. Also zum Beispiel:

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

Dies führt jedoch zu:
Fehler: Die lokale Variable "vec" wird in diesem Kontext möglicherweise nicht angezeigt

Was mich nicht überrascht; Ich gehe davon aus, dass der Standardwert zur Kompilierungszeit bekannt sein muss. Mache ich die Funktion also als Vorlage? Wie würde ich die Funktion so gestalten, dass der Parameter immer noch ein Int und der Vektor immer noch ein Vektor von Ints ist und der Größenparameter als die standardmäßig in Vektorgröße übergebene Größe abgeleitet wird?

Ich möchte nicht während des Funktionsaufrufs die Größe des Vektors übergeben müssen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage