Thanks, Arthur. Thinking of expected as a "wrapper" around a return type makes more sense to me now than thinking of it as a "container of one or error".If C/C++ had been designed with void being an empty monostate value type, I guess we wouldn't have all this trouble of treating void as a special case in generic programming. Libraries wouldn't have needed to invent their own "nothing" types like nullopt_t or monostate_t.