我最近发现std::optional
是一种提高代码清晰度的方法,尤其是对于函数的返回值。但是我对它对性能的影响有疑问。更具体地说,我想知道是否可以编写类似于以下代码的代码,该代码将允许编译器应用命名返回值优化。
struct Data
{
int x;
int y;
};
std::optional<Data> makeData(bool condition)
{
Data data;
if(condition)
{
data.x = 2.0;
data.y = 2.0;
return data;
}
else
{
return {};
}
}