On 06/08/2015 01:55 PM, Louis Dionne wrote:
Michael Caisse
writes: [...]
Converting a type list to a variant is a common thing I need to do. Creating yet-one-more-variant type is probably not in Hana's best interest. Variant is a priority for C++17 and there are already a variety of other implementations.
If you provide an adapter for boost::variant (possibly as a util so it isn't a dependency of the core library) then that may satisfy the concerns. Optionally, getting an MPL style typelist from Hana would also solve these types of interfacing issues.
If all you need is to make a variant type (boost::variant<...>) from a sequence of types (make_tuple(type<T>...) in Hana), the following will do:
auto types = make_tuple(...); // a tuple of Type objects in Hana using Variant = decltype(unpack(types, template_boost::variant))::type; // Variant is now your boost::variant<...>
Basically, we're considering boost::variant as a function on types (via template_), and then we're applying that function to the contents of the tuple (via unpack). Finally, we take everything back to the type level by using decltype(...)::type.
Regards, Louis
Thank you for the example Louis. -- Michael Caisse ciere consulting ciere.com