`

通过变长模版参数创建一个模版参数类型都是std::vector<T>的tuple

 
阅读更多

链接:https://www.zhihu.com/question/38949490/answer/78918985

template <typename ...Types>
struct store
{};

template <>
struct store<>
{
    using type = std::tuple<>;
};

template <typename First>
struct store<First>
{
    using first = std::vector<First>;
    using type = std::tuple<first>;
};

template <typename First,typename ...Types>
struct store<First,Types...>
{
    using first = std::vector<First>;
    using type = std::tuple<first,typename store<Types...>::first>;
};

int main()
{
    store<>::type;
    store<int>::type;
    store<int,double>::type;

    return 0;
}
 
分享到:
评论

相关推荐

    c++头文件大全.txt

    C++ 标准库头文件大全 ...&lt;tuple&gt;:元组 &lt;unordered_map&gt;:无序映射 &lt;unordered_set&gt;:无序集合 &lt;utility&gt;:实用程序 &lt;vector&gt;:向量 输入/输出 &lt;fstream&gt;:文件流 &lt;iomanip&gt;:输入/输出操作符格式化

    C++11新特性std::tuple的使用方法

    1. 引入头文件 #include &lt;tuple&gt; 2. std::tuple初始化 std::tuple&lt;int&gt; t1(10...std::tuple&lt;int&gt; foo_tuple() { return {1, -1}; // Error until N4387 return std::tuple&lt;int&gt;{1, -1}; // Always works return

    C++11新特性std::make_tuple的使用

    std::tuple是C++ 11中引入的一个非常有用的结构,以前我们要返回一个包含不同数据类型的返回值,一般都需要自定义一个结构体或者通过函数的参数来返回,现在std::tuple就可以帮我们搞定。 1.引用头文件 #include ...

    fmt_extension:{fmt}通过元组接口支持范围,容器和类型

    std::vector&lt; int32&gt; iv{ 1 , 2 , 3 , 5 , 7 , 11 }; auto ivf = fmt::format( " {} " , iv); assert (ivf == " { 1, 2, 3, 5, 7, 11 } " ); fmt::print ( " vector {} \n " , iv); std::pair&lt; int64&gt; pa1{ 42 , 3 ....

    C++ lua Kaguya 应用

    C++ lua Kaguya 应用

    pfr:std :: tuple类似用户定义类型的方法,没有任何宏或样板代码

    增强PFR 这是一个C ++ 14库,用于非常基本的反射,使您可以按索引访问结构元素,并为用户定义的类型提供其他std::tuple类的方法,而无需任何宏或样板代码。检测结果分行建立测试覆盖率更多信息开发: 主: 激励实例...

    SerializeQueue:SerializeQueue(serq)是仅C ++ 14标头的库,支持使用队列序列化数据和STL容器

    SerializeQueue支持以下数据类型, 布尔字符,未签名的字符uint64_t int,无符号int 浮点双std :: string STL容器(可以容纳任何受支持的类型,包括其他STL容器) std :: pair &lt;T1&gt; std :: tuple &lt;T&gt;(限于基本类型) ...

    lexyaccmingw

    &lt;br&gt;同时还包含了一个MinGW的GNU的C++编译器环境:)可以直接使用:)&lt;br&gt;&lt;br&gt;这个包包含的文件列表:&lt;br&gt;&lt;br&gt;MinGW GNU的C/C++编译程序(windows版本)&lt;br&gt;bison.exe GNU的yacc程序&lt;br&gt;bison.hairy GNU的yacc程序...

    rebind:C++ 模板操作库

    重新绑定 Rebind 是一个用于操作类型容器的 C++ ... Rebind本身是从一个实例中获取模板参数并将它们应用于不同的模板 - 例如: # include " rebind.h " using namespace rebind ; using Pair = std::pair&lt; int&gt;; using

    C++ STL 内 std::{bind/tuple/function} 简单实现

    其次是实现 tuple,这个会比较绕,通过模板取第一个参数,然后用剩下的参数继续生成 tuple并继承,是一种递归的思想 有了 tuple 就要有 get(),这个就更比较绕了,首先是需要类似的方式实现获得 tuple 的值类型与...

    myostream:方便的输出,适用于所有可迭代项目的容器类型

    C ++标准要求:&gt; = C ++ 11 支持的容器或类似容器的类型: std :: pair std :: tuple std :: array std :: deque std :: forward_list std :: initializer_list std :: list std :: vector std :: set std :: ...

    浅析C++标准库元组(tuple)

    一、什么是元组 ...一个tuple可以包含不同类型的成员,例如上面的tu包含一个int和一个字符串。 二、用法 在考察源码之前,我们必须先知道它的用法。 要想使用tuple,要包含头文件&lt;tuple&gt;: #include &lt;tu

    tup-op-brackets

    将运算符[]添加到std::tuple 警告:这是草稿。 基本原理 当前,为了访问元组,我们需要使用std::get&lt;&gt;函数家族。 这与我们为其余类型建立索引的通常方式不一致,而且更为冗长。 用户通常期望元组应该可通过...

    Python数据类型详解(三)元祖:tuple

     字符串:str(注:\t等于一个tab键)  布尔值: bool  列表:list  列表用[]  元祖:tuple  元祖用()  字典:dict 注:所有的数据类型都存在想对应的类列里,元祖和列表功能一样,列表可以修改,元祖不能...

    Shiro:实验性 C++ 库

    shiro::tuple 是一个元组实用程序,它具有像 std::tuple 这样的接口。 假设用于复杂的元编程等。它的操作的递归深度受到限制,因此它可以处理很多参数。 # include &lt; shiro&gt; constexpr auto ct = shiro::make_tuple...

    leetcode部分排序类-competivie-cpp:竞争-cpp

    leetcode 部分排序类最大子数组和 ...std:get&lt;i&gt;(tuple)获取第i个元素,也适用于pair 外部cmp函数 使用lower_bound作为二分查找 使用upper_bound作为索引 + 1 要获取索引,请使用index - v.begin() 基

    测量程序编制 - python 31数据类型:Tuple(元组) - 装包与拆包.pptx

    因此当你返回多个变量,而外面只用一个变量去接收,会接收到一个元组 而当你用多个变量去接,就能对应的接收到每个值,这是因为自动拆包 装包与拆包 返回两个值的函数 # 计算面积和周长函数 def AreaPerimeter(width...

    Kapok 超简单的序列化库

    对对象进行自动化的序列化和反序列化,用起来非常简单,先来看个序列化/反序列化一个tuple的例子吧。 //序列化 Serializer sr; auto tp = std::make_tuple(10, 12, string("test")); sr.Serialize(tp, "tuple"); /...

    NPOIWordHelper.cs

    IPOI操作word的帮助类 /// &lt;summary&gt; /// 创建文档 /// &lt;/summary&gt; /// &lt;param name="setting"&gt;&lt;/param&gt; ... public static void Export... private static Tuple&lt;int, int&gt; GetPaperSize(PaperType type)

    c++11封装thread库的方法示例

    C++11 ,封装了thread的多线程的类,这样对多线程的使用更加方便。下面这篇文章主要给大家介绍了关于c++11封装thread库的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics