sob., 23 lut 2019 o 01:12 Robert Ramey via Boost
On 2/22/19 9:48 AM, Peter Dimov via Boost wrote:
I'd like to request a formal Boost review for the Variant2 library, https://github.com/pdimov/variant2. Variant2 contains an implementation of a variant
type that is an almost conforming std::variant, except it doesn't require C++17 and supports C++11 and above. It's also never valueless and has a few other extensions.
I see optional, expected, outcome and .. (monad?) as just special cases of variant. for example
template<typename T> using optional = variant
; Why is it necessary to have all these type implemented? Can't there be some sort of "base" type which can be used to implement all these others?
I think it is about the interfaces and guarantees. optional provides .value_or(), .map() functions, and operators, like ->. Also, because it does not have to consider the assignment of mixed types its implementation is more lightweight and therefore compiles faster and introduces fewer symbols. Regards, &rzej;