代码之家  ›  专栏  ›  技术社区  ›  SpeakX

从模板参数类型构造类类型元组

  •  1
  • SpeakX  · 技术社区  · 1 年前

    我想构造一个类型,它是具有不同模板参数类型的同一类的元组。我的意思是:

    想象一下我们有一节课

    template<class Arg>
    class A
    {
        //.... details
    }
    

    我想定义如下内容:

    template<class... Args>
    struct construct_tuple 
    {
        //assume I can access Args[...]
        using type = std::tuple<A<Args[0]>, A<Args[1]>, ..., A<Args[n]>>;
    }
    

    你能帮忙吗?

    我相信可能有一个解决方案,通过迭代可变参数并使用元组类型之间的连接,或者使用其他一些TMP,例如。 std::enable_if std::conditional_t .

    2 回复  |  直到 1 年前
        1
  •  4
  •   Drew Dormann    1 年前

    而你的代码没有尝试 建筑 任何东西,这将编译并提供您想要的东西。

    template<class... Args>
    struct construct_tuple 
    {
        //assume I can access Args[...]
        using type = std::tuple<A<Args>...>;
    };
    
        2
  •  4
  •   NathanOliver    1 年前

    您只需要使用包扩展,使用:

    using type = std::tuple<A<Args>...>;
    

    将扩展到:

    using type = std::tuple<A<Args1>, A<Args2>, ..., A<ArgsN>>;