gpt4 book ai didi

c++ - 如何使用已知的非默认构造函数实例化未知大小的可变元组?

转载 作者:行者123 更新时间:2023-11-28 06:13:04 24 4
gpt4 key购买 nike

<分区>

假设我有一个 std::tuple 类型。我不知道它包含多少或什么类型,但我知道每个元素都有一个采用单个参数的构造函数。

为了这个问题,我们假设参数是整数 5但直到运行时才知道该值

如何构建这样的元组?

到目前为止,这是我的尝试,它试图用编译时常量构造元组(不是我想要的,但这是一个起点):

#include <tuple>                                                                 

struct Fixture
{

// I don't know the value until runtime, so this is a poor
// example anyway.
template <typename T>
struct Unpack
{
static const int value = 5;
};

template <typename... T>
struct Y
{
Y()
:
// this needs to be a runtime value
tup(Unpack<T>::value...)
{
}

std::tuple<T...> tup;
};

Y<int, double, unsigned /*, some other classes */> y;
};

除了丑陋(Unpack 类不是必需的)和仅使用编译时已知的常量值之外,这还会导致链接器错误:

Undefined symbols for architecture x86_64:
"Fixture::Unpack::value", referenced from: Fixture::Y::Y() in testTest.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

标准库或 Boost 中是否有一些元编程魔法可以使这项工作成功,最好是使用更简洁的语法?我觉得类似于 std::integer_sequence 的东西可能对我有帮助,但我不知道如何做!

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com