The discussions are interesting, but when they evolve into communal design from a simple review things get ... complicated. Maybe if we kept reviews more focused on thumbs up/down and criticism and support rather than "design" they might be less of a death march and we might encourage more people to participate in reviews.
In this spirit, I have got a question to Niall, or whoever who used the library in their real projects: did the use cases required to change the state of a once constructed `outcome`?
I gave many examples throughout the review of changing the state of
existing outcomes. Indeed, almost every AFIO object init function
implementation does so, we construct an empty or valued result<T> on the
stack and fill it in over time as part of the "two phase construction"
used throughout AFIO.
Also, in KernelTest, there is some constexpr code which statically
constructs a std::array