
On Thu, Jul 13, 2017 at 3:12 AM, Niall Douglas via Boost < boost@lists.boost.org> wrote:
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.