問題タブ [stdoptional]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1159 参照

c++ - ネストされた std::optional を平坦化するには?

注:この質問はthisの複製として簡単にマークされましたが、特に std::optionals について質問しているため、正確な複製ではありません。一般的なケースに関心がある場合は、まだ良い質問です。

次のようなネストされたオプショナルがあると仮定します(ばかげたおもちゃの例):

そして、このスパム機能:

このオプションのチェックを平坦化する最良の方法は何でしょうか? 私はこのようなものを作成しましたが、それは可変長ではありませんが、それについてはあまり気にしません(membr3本当に必要な場合は、もう1つのレベル( でオーバーロード)を追加できますが、それを超えるものはとにかくひどいコードです)。

ゴッドボルト

ノート:

  • 私はより良いオプションstd::optionalに切り替えたくありません。
  • 参照をサポートしていないため、コピーを作成する必要があるポインターを返さない限り、perf についてはあまり気にしません (arg が一時的でない限り) std::optional
  • ネストされたオプションをうまくflatten_has_valueフラット化する方法があれば、その関数を書く方法もあるからです。
  • 私のコードは機能しているように見えますが、かなり醜いので、より良い解決策があるかどうか疑問に思っています。