有没有一种优雅的方法可以在函数中使用非静态值作为默认参数? 我看到了一些早期针对相同问题的回复,最终总是要显式地编写重载。 在C++17中是否仍然需要这样做?
我想做的是类似于
class C {
const int N; //Initialized in constructor
void foo(int x = this->N){
//do something
}
}
不需要写
class C {
const int N; //Initialized in constructor
void foo(){
foo(N);
}
void foo(int x){
//do something
}
}
这使得重载的目的不太明显。
std::optional
可以解决问题,但我会遵循Sam的建议进行重构。 - gsamaras