我最近发现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 {};
}
}