nullopt
の代わりにnullptr
を使用できないのはなぜですか?なぜ{}
はnullopt
のように翻訳されますか?nullptr、{}とnulloptの違い
-1
A
答えて
5
optional<T>
T
へのポインタのようなものではない、それはT
または何もないのいずれかの値です。ポインターや参照のように、「ダンブールoptional
」やその他の「無効な」値を持つことはできません。nullptr
は、任意のポインタ型の値に変換できるオブジェクトです。nullopt
は、任意のoptional
タイプの値に変換できるオブジェクトです。{}
(値を期待文脈において)T
コンテキストから推測いくつかのタイプである「タイプT
の デフォルト構築オブジェクト」を意味する表現です。T
がポインタ型の場合は、nullptr
と比較されます。T
がoptional
タイプの場合、nullopt
と比較されます。T
が算術型の場合は、0
と比較されます。T
が標準のコンテナタイプの1つである場合、それはそのタイプの他の空のコンテナと同等になります。
3
はなぜ
nullptr
の代わりnullopt
使用することはできませんか?
これは別のものだからです。彼らは何か違うことを意味し、彼らは何か違うものに使われています。
std::optional<int*> o;
o = nullptr;
assert(o.has_value());
o = std::nullopt;
assert(!o.has_value());
そして、なぜ
{}
がnullopt
のように変換します。nullptr
はすでに何かをするためそれは
std::optional
で使用するための明確なnullopt
値を持っている必要がありますか?
(他のタイプの{}
を使用しない場合ための唯一の真実であるNB。)
またしても、そのことはo = {}
を言うと、それは正しいこと™とそう持つことができるのが便利だからそれを動作させるためにstd::optional
の仕様が書かれています。
関連する問題
- 1. gcc nullptrの問題
- 2. Box2Dコンパイルトラブル。 nullptr
- 3. 移動セマンティクス:ポストセットnullptr
- 4. デバッガを投げるnullptr例外nullptr中にチェックする
- 5. nullptr初期値とWinAPI NULL戻り値
- 6. CのNULLはC++と等しい11 nullptr
- 7. PCリントと可能なnullptrを確認してください
- 8. "using"(typedef)pointer:デフォルトコンストラクタreturn nullptr?
- 9. NULL以上の説明、0、nullptr
- 10. 演算子がNULLでない生ポインタとnullptrの間にありません
- 11. {!!の違い!!}と{{}}
- 12. 「 '」と「'」の違い
- 13. Win32 CreateWindow()エラー、これはnullptrです
- 14. 違いダウンケースとダウンケースの違い! Rubyで
- 15. nullptrをstd :: string :: assignに渡すことは有効ですか?
- 16. Mathnet Matrix型でテスト(m == nullptr)したとき
- 17. Open GL ES - GLenumとGlintの違いとGLintとGLsizeiの違い
- 18. C++ overloading subscript dereference where nullptrが許可されています
- 19. PythonとPandasの違いの相違点
- 20. "!"の違いと "。"オペレータ
- 21. g ++との違い
- 22. "?"の違いと "@"ビジュアルベーシック
- 23. $ @と$の違い! perl
- 24. Kafka - DefaultPartitionerとMessageKeyの違いとカスタムパーティショナーの違い
- 25. タグとロールの違い - タグとロールの違い
- 26. 右の子を削除するとnullptrへの親ポインタの左ポインタ
- 27. posix_memalignとmmapとの違い
- 28. OAuth2とOmniauthとの違い
- 29. とnewgemとの間違い
- 30. Node.jsとtomcatとの違い
'std :: optional' ;-) –
Jarod42
存在しないオプションのポインタは存在し、 'nullptr'のポインタとは異なります。デフォルトで初期化された 'optional'はオブジェクトを持たなくてはなりません。それは私には明らかです。また、 'std :: optional'を受け入れた論文を読むことで、あなたの質問に答えられるかどうか疑問です。 –
'nullptr' ="ポインタがありますが、何も指していません "; 'nullopt':「何もない」 – molbdnilo