模板参数的变量类型

时间:2019-08-26 00:25:21

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

我试图使用指向该结构成员的任意指针...但是没有任何效果;

代码1:

template <
        typename Structure,

        template <typename... Args>
        typename Wrapper,

        template <typename... Args>
        typename Wrapper2,

        typename... Args1,
        void Structure::* ... Args2>
    auto MembersContructer(Wrapper<Args1...> wrapper1, Wrapper2<Args2...> wrapper2)
        -> TypesContainer<mi::member<Structure, Args1, Args2>...>;

无效结构:: * ... Args2

我尝试使用“可变参数类型的可变参数类型”)

代码2:

 template <
        typename Structure,

        template <typename... Args>
        typename Wrapper,

        template <typename... Args>
        typename Wrapper2,

        typename... Args1,
        (Args1 Structure::*) ... Args2>
    auto MembersContructer(Wrapper<Args1...> wrapper1, Wrapper2<Args2...> wrapper2)
        -> TypesContainer<mi::member<Structure, Args1, Args2>...>;

(Args1结构:: *)... Args2

希望有人能弄清楚我想要什么。

1 个答案:

答案 0 :(得分:0)

使用c++17 placeholder auto for non-type template parameter

template <
    template <typename... Args> typename Wrapper,
    template <auto... Args> typename Wrapper2,
    typename... Args1,
    auto... Args2
>
auto MembersContructer(Wrapper<Args1...> wrapper1, Wrapper2<Args2...> wrapper2);

请注意,无需存储Structure