a coroutine observable can get values from other observables
begin to write a noexcept replacement for boost::variant
apply_visitor works
operator == for fast_variant; try_get_ptr; nesting works
fast_variant can be constructed and assigned from const values