1
using namespace std;
...
array<tuple<X, Y, Z>, 3> = {make_tuple(X(), Y(get<0>(???)), Z()), ...

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

4

1 回答 1

2

分别构造 X() (请不要使用using namespace std...)

X x;
std::array<std::tuple<X,Y,Z>, 3> a { make_tuple(x, Y(x), Z()), ... };

那应该工作...

于 2014-04-08T17:43:25.970 回答