首页 > 解决方案 > 模板参数的可变类型

问题描述

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

代码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

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

标签: pointersboostc++17variadic-templates

解决方案


c++17 占位符 auto 用于非类型模板参数

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

请注意,无需存储Structure.


推荐阅读