XS-librangeV3

 view release on metacpan or  search on metacpan

range-v3-0.12.0/include/meta/meta_fwd.hpp  view on Meta::CPAN

    }

    template <typename...>
    META_CONCEPT is_true = META_CONCEPT_BARRIER(true);

    template <typename T, typename U>
    META_CONCEPT same_as =
        META_CONCEPT_BARRIER(META_IS_SAME(T, U));

    template <template <typename...> class C, typename... Ts>
    META_CONCEPT valid = requires
    {
        typename C<Ts...>;
    };

    template <typename T, template <T...> class C, T... Is>
    META_CONCEPT valid_i = requires
    {
        typename C<Is...>;
    };

    template <typename T>
    META_CONCEPT trait = requires
    {
        typename T::type;
    };

    template <typename T>
    META_CONCEPT invocable = requires
    {
        typename quote<T::template invoke>;
    };

    template <typename T>
    META_CONCEPT list_like = is_v<T, list>;

    // clang-format off
    template <typename T>
    META_CONCEPT integral = requires
    {
        typename T::type;
        typename T::value_type;
        typename T::type::value_type;
    }
    && same_as<typename T::value_type, typename T::type::value_type>
#if META_CXX_TRAIT_VARIABLE_TEMPLATES
    && std::is_integral_v<typename T::value_type>
#else
    && std::is_integral<typename T::value_type>::value



( run in 0.884 second using v1.01-cache-2.11-cpan-05444aca049 )