初期化していない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)