问题标签 [stdtuple]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
413 浏览

c++ - 我可以从 std::tuple 获得“cons list”行为吗?

我想递归地定义一个设置 std::tuple 的所有元素的函数。如果它是一个 boost::tuple,我会简单地看这里并复制这个例子:

到目前为止,对于 std::tuple,我找不到任何几乎那么简单的东西。附近有什么吗?

更新:好的,我需要进一步充实这个问题。

我正在编写包装元组的类 foo ,以便做很多事情,其中​​只有一个是设置所有元素。我希望保留这种对 foo 的递归定义,但要从 boost::tuples 切换到 std::tuples。

0 投票
4 回答
728 浏览

c++ - 在大型项目中使用 c++11 std::tuple

C++11 添加了非常有用的容器 std::tuple,现在我可以将许多结构转换为 std::tuple :

但是,这只是在大型项目中使用 std::tuple 的一个缺点——可能很容易忘记每种元组的含义,因为这里不是按名称访问,只能按索引访问。

出于这个原因,我会使用旧的 Field 类。

我的问题是,我可以简单而美丽地解决这个缺点吗?

0 投票
1 回答
229 浏览

c++ - 如何提取/扩展可变参数模板参数

  • t1将成为std::tuple<QList<int>, QList<double>>
  • t2将成为std::tuple<QVector<int>, QVector<double>>

我不知道这是否可能。目前我为此使用预处理器魔法。但我希望可变参数模板也可以做到这一点。那么,我可以做任何递归的事情或任何类似的事情来提取模板吗?

0 投票
1 回答
1886 浏览

c++ - 初始化元组数组,其中元组元素需要前一个元素作为 ctor arg

这显然不起作用,因为我无法在 get<>() 中放入任何内容,因为元组尚未构建。然而,我需要在给定数组元素的同一元组中通过类型转换从 X 初始化 Y 元素。我怎样才能做到这一点?在我的情况下,Y 只能通过 X 的这种类型转换或移动来构造;没有默认的ctor。此外,我需要一个基于堆栈的数组,所以如果不为 vector 编写堆栈分配器,我就不能使用 vector 代替,这对于应该做的事情来说是一个巨大的代码添加。

0 投票
1 回答
455 浏览

c++ - 在异构元组上映射 C++ 重载函数?

在 C++ 中,是否可以在异构元组上映射重载函数?例如:

我可以编写一个映射函数,将相同的重载实例映射f到每个元组元素(下面的代码),但我不知道如何将重载解析f从调用推迟map到调用finside map。有没有人想出如何做到这一点?

这是我将重载函数的单个实例映射到元组上的代码(其中 seq 和 gens 取自此答案https://stackoverflow.com/a/7858971/431282):

0 投票
2 回答
760 浏览

c++ - 创建 C++ std::tuple 投影函数

我正在寻找std::tuple. 即,该函数接收一个整数列表作为模板参数,并返回一个仅在这些索引处具有值的元组。

例如,假设我有一个 tuple tuple<int,String,char,float> t,那么调用 toproject<1,3>(t)会产生一个 type 的元组tuple<String,float>

当然,关键似乎是递归模板。但是,我无法让它工作。我尝试通过声明一个结构来计算投影操作的返回类型。即使这样也失败了。这是我尝试过的:

这编译。具有空元组的基本情况也适用,即:

结果t是一个空元组。但是,递归案例无法编译:

我收到以下错误:

所以似乎递归情况不被识别,但为什么呢?

0 投票
2 回答
147 浏览

c++ - 可变参数容器的 getter - get<0>() 仅适用于具体类型?

我需要一种特殊的可变参数容器并且遇到了一些无法预料的问题,因此我创建了以下最小示例(请参阅注释):

这里发生了什么?为什么 g++ (4.7.2) 抱怨 foo 中的声明?为什么 container::get #3 不能编译?
我猜像 get<0> 这样的东西只能在具体类型上调用?
这个行为标准符合吗?

0 投票
2 回答
813 浏览

c++ - 在可变参数模板函数中制作成员函数指针的元组

如何获得成员函数指针的元组?我似乎找不到正确的语法。我认为这会起作用:

但它不能编译(GCC 4.8.2):

错误:函数 'constexpr std::tuple::__type ...> std::make_tuple(_Elements&& ...) [with _Elements = {}] 的参数太多返回 std::make_tuple(&std::vector::推回...); ^

我通过引入这样的辅助函数找到了一种解决方法:

我可以以某种方式在单个函数中执行此操作吗?

0 投票
2 回答
343 浏览

c++ - 将元组参数转发到 VS2012 中的函数

我正在尝试将元组参数转发到 VS2012(更新 3)中的函数。

我的理解是,在 C++11 中使用可变参数模板是可能的,不幸的是,VS2012 仅支持“假”可变参数。

我希望 VS2012 中有一种方法可以实现上面显示的功能,但我不确定,如果没有真正的可变参数,这可能吗?

0 投票
2 回答
415 浏览

c++ - std::array 编译时间扣除

我有一段代码,我试图根据等待的数据类型自动解码缓冲区。数据表示为元组:

我也有元组 hepler 来迭代元组并为每个元组执行一个仿函数:

这是我的解码器函子:

这就是调用代码的地方:

所以一切都适用于整数类型,并且它们被完美地解码。但是,当我想尝试实现一种新的解码方法(用于数组)时,它没有编译:

是错误(gcc-4.9)。

所以我不明白为什么我会收到这个错误。由于测试std::is_integral<X>::value,数据不应该被评估DecodeIntegral( x, buffer, index );吗?

请不要这是正在进行的工作,因此肯定会有一些错误和改进。并感谢您的帮助!