从std :: integer_sequence pack

时间:2018-03-26 17:21:50

标签: c++ templates variadic-templates c++17

我试图实现以下效果:

template <typename> struct integral_pack_traits;

template <template <template <typename T, T...> class> class Wrapper,
        template <typename T, T...> class P>
struct integral_pack_traits<Wrapper<P>> {
    using type = T;
};

因此,例如,std::index_sequence将具有typedef std::size_t。这甚至可能吗?注意

template <typename Pack> struct integral_pack_traits;

template <template <typename U, U...> class P, typename T, T... Is>
struct integral_pack_traits<P<T, Is...>> {
    using type = T;
};

似乎更合适,但对我的应用程序不起作用。这是我的用例:

template <template <typename T, T...> class P> struct template_wrapper;

template <typename TemplateInfo> struct template_traits;

template <template <typename U, U...> class P>
struct template_traits<template_wrapper<P>> : 
    template_traits_h<template_wrapper<P>, std::integer_sequence<int>> { };

上面的int需要更广泛地替换为

integral_pack_traits<template_wrapper<P>>::type

为了正常工作。

0 个答案:

没有答案