Спрошено из-за этого : Аргумент по умолчанию в c ++
Скажем, у меня есть такая функция: void f (int p1 = 1, int p2 = 2, int p3 = 3, int p4 = 4);
И я хочу вызвать это, используя только некоторые аргументы - остальные будут значениями по умолчанию.
Что-то вроде этого могло бы работать:
template
void f(int p1=1, int p2=2, int p3=3, int p4=4);
// specialize:
template<>
void f(int p1) {
f(1, p1);
}
template<>
void f(int p1, int p2) {
f(1, p1, p2);
}
// ... and so on.
// Would need a specialization for each combination of arguments
// which is very tedious and error-prone
// Use:
f(5); // passes 5 as p2 argument
Но для практического применения требуется слишком много кода.
Есть ли лучший способ сделать это?