
A majority of peer review feedback didn't see the need for variant storage. Eliminating it very significantly reduces the complexity of the implementation, it's a big gain. I was able to SFINAE all the constructors because of the compile time budget released by eliminating the variant storage.
If you're going to maintain strict no-value-plus-error semantics then union/variant storage makes sense, as otherwise you're wasting memory. I'm not sure why this would increase complexity.
I did some benchmarking before making the change to non-variant storage, and found a worst case performance loss of 3-6% depending on compiler.
Would you be willing to share some of these benchmarks? I've never benchmarked Noexcept, it would be interesting to see how it compares.
https://github.com/ned14/outcome/tree/master/benchmark It would indeed be very interesting to see how much overhead TLS introduces. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/