因此被问到:C++ 中的默认参数
假设我有这样的功能:void f(int p1=1, int p2=2, int p3=3, int p4=4);
我想只使用一些参数来调用它——其余的将是默认值。
像这样的东西会起作用:
template<bool P1=true, bool P2=true, bool P3=true, bool P4=true>
void f(int p1=1, int p2=2, int p3=3, int p4=4);
// specialize:
template<>
void f<false, true, false, false>(int p1) {
f(1, p1);
}
template<>
void f<false, true, true, false>(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<false, true, false, false>(5); // passes 5 as p2 argument
但是它需要太多的代码才能实用。
有一个更好的方法吗?