【发布时间】:2013-12-16 15:32:00
【问题描述】:
最小的工作示例:
#include <tuple>
struct example
{
example(int, char) {}
};
int main()
{
std::tuple<example, int, double>
my_tuple(example(0, 'x'), 42, .0);
// std::tuple t = make_my_tuple(0, 'x');
return 0;
}
这行得通。
有没有更优雅的方法来只初始化第一个成员,就像我在评论中所描绘的那样? 只接受参数来构造第一个元组成员而不初始化其他成员?
我问的原因是什么?我只是对语言的语义感兴趣。
【问题讨论】:
-
元组怎么知道第二个参数是42?
-
@itwasntpete 我还不想初始化第二个和第三个参数。
-
好的,但是第一个参数应该是示例吗?
-
你可以假设它现在总是
struct example类型,是的。 -
你是说你想要为元组的所有成员除了第一个成员执行完全-indeterminate值?如果是这样,我不知道您将如何使用元组来做到这一点(无论如何,不用自己制作)。至少 std::tuple 将对未指定的成员进行值初始化,并且我看不到您将采取任何方式(至少不是很明显),并不是说我可以理解您想要的原因。