这个例子:
#include <optional>
#include <iostream>
using namespace std;
int main()
{
optional<int> t{}; // nullopt (empty) by default
cout << *t << endl;
return 0;
}
实际上这个程序打印了一些 int (类型的未初始化值int
)。此外,libcxx 使用 assert-check 来访问非参与值。
为什么标准在这里不需要 throwing 或 sigsegv?