我需要在我的函数中使用默认值创建一个可选参数。目前签名看起来像这样:
void func(int a, std::optional<int> b = 10)
该函数的行为方式如下:
func(15, 5); // works
func(15); // works
问题是:如果我删除可选参数的显式初始化,如下所示:
void func(int a, std::optional<int> b)
然后看起来函数的签名发生了变化
func(15, 5); // works
func(15); // fails
这让我对std::optional
首先的目的感到非常困惑。如果不创建可选参数有什么好处?