boostorg / mpl

Boost.org mpl module
http://boost.org/libs/mpl
Boost Software License 1.0
49 stars 78 forks source link

How to make specialization of `boost::mpl::sequence_tag` when only trait available? #71

Open denzor200 opened 2 years ago

denzor200 commented 2 years ago

I have no problems when i know template of type, that will be passed into boost::mpl::sequence_tag:

namespace boost { namespace mpl
{
    template <typename>
    struct sequence_tag;

    template <typename... Elements>
    struct sequence_tag<std::tuple<Elements...>>
    {
        typedef fusion::fusion_sequence_tag type;
    };
}}

But my case is when have no access for std::tuple template and i only have an is_tuple trait:

namespace boost { namespace mpl
{
    template <typename, typename=void>
    struct sequence_tag;

    template <typename T>
    struct sequence_tag<T, std::enable_if_t<is_tuple<T>::value>>  // won't work
    {
        typedef fusion::fusion_sequence_tag type;
    };
}}

SFINAE is not working on boost::mpl::sequence_tag, does it have an another way?