- 618 名前:デフォルトの名無しさん (ワッチョイ 2301-9pon) mailto:sage [2023/07/30(日) 23:32:06.49 ID:Phugis3j0.net]
- 初期化していないstd::optional <int>をdereferenceすると0として扱われます
boost::optional <int>だとAbortされるのですが なぜstdではこのようになっているのかどなたかご存知ですか? $ cat test.cpp #include <optional> #include <boost/optional.hpp> #include <iostream> using namespace std; int main () { std::optional <int> i0; cout << *i0 << '\n'; if (i0) cout << "Initilized\n"; else cout << "Not initilized\n"; boost::optional <int> i1; cout << *i1 << '\n'; return 0; } $ ./test 0 Not initilized test: /usr/include/boost/optional/optional.hpp:1212: boost::optional<T>::reference_type boost::optional<T>::get() [with T = int; reference_type = int&]: Assertion `this->is_initialized()' failed. Aborted (core dumped)
|

|