Our implementation of optional for pre-C++17 has a bug: `optional<T>::value_or()` doesn't return a value :-(