では、どちらかを優先する理由はありますか?
それらは非常に異なる意図を表現optional
しています。関数が結果を返さない可能性があることを示しています(これはエラーの場合ではありません)。unique_ptr
所有権のセマンティクスについて説明します (エラーを表現するために、null と一緒に使用する方がより受け入れられます)。
通常、インターフェイスの背後にある意図を最もよく表すものを使用します。
たとえば、受信したバッファを HTTP 要求オブジェクトに解析しようとする HTTP サーバーを作成しているとします。不完全なバッファを解析しようとしても、エラーは発生しません。待機してさらにデータをバッファリングしてから、再試行する必要があります。
関数が何も返さない可能性があることを明確にするために、これを , を使用して表現しoptional
ます (何も返さないことはエラーケースではありません)。
解析で何かを検証する必要がある場合 (たとえば、解析された式が無効な正規表現である場合、正規表現パーサーはエラーを生成する必要があります)、 null を返すか、できればunique_ptr
例外をスローします。