> A possible std::optional footgun is that an optional object can implicitly be converted to bool,
That isn't true, as std::optional are explicitly converted to bool to signal whether the object stores a value.
http://en.cppreference.com/w/cpp/utility/optional/operator_b...