Falls man auch den mittleren Parameter weglassen können sollte ohne dabei auf den letzten zu verzichten, also einen Aufruf wie folgenden machen möchte:
meinTest("datei4.dat",binomial); // Fehler (Signifikanz fehlt)
dann kann man dies nur durch ein zusätzliches Überladen der Funktion erreichen:
bool meinTest(string dateiname, distribution vert) { return bool(dateiname, 0.95, vert); }
Dies funktioniert natürlich nur, wenn die Typen der Parameter verschieden sind, da sonst der Compiler nicht entscheiden könnte, welche Variante er nehmen sollte. Dazu noch zwei einfache Negativbeispiele:
int meineFunktion(float a, int b=5, int c=7); int meineFunktion(float a, int c); //Fehler - deckt sich mit meineFunktion(float, int, 7) int meineFunktion(float a); //Fehler - deckt sich mit meineFunktion(float, 5, 7)