【发布时间】:2023-02-26 19:14:54
【问题描述】:
我正在尝试编写一个构造函数,它将 unique_ptrs 的可变参数包作为参数并将其存储在一个元组中:
template<class... E>
class A
{
std::tuple<std::unique_ptr<E>...> a_;
public:
A(std::unique_ptr<E>&&... a)
: a_(std::make_tuple(std::move(a)...)) {}
};
但是当我用一个以上的参数调用构造函数时编译失败——例如
A< double> obj(std::make_unique<double>(2.0), std::make_unique<double>(3.0));
无法编译并在 tuple::test_method() 中出现错误。
我的问题是:
- 我正在尝试做的事情有什么本质上的错误吗?
- 可行吗?
谢谢
【问题讨论】:
-
您的构造函数应该引用
a而不是schemes(未定义?),并且您的对象应该是A<double, double>而不是A<double>。但除此之外,似乎对我来说工作正常。 -
你说得对。使用
schemes是一个拼写错误(现已编辑)。问题出在<double>与<double, double>中。如果您将其作为答案发布,我会接受。谢谢! -
你的意思是
A<double, double>,因为你存储了两个unique_ptr<double>s。 -
是的,这就是我的意思。