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 {};
}
}