【发布时间】:2021-12-29 09:17:12
【问题描述】:
我有一个简单的结构:
struct A
{
int a;
int b;
int c;
// A(int a, int b, int c) : a{a}, b{b}, c{c} { }
};
现在对构造函数进行注释。我正在尝试以这种方式创建A 类型的对象:
auto t = std::make_tuple(1, 2, 3);
A a = std::make_from_tuple<A>(std::move(t));
但它不会编译。 MSVC 给出一条消息:
<function-style-cast>: cannot convert from initializer_list to _Ty。
在我取消注释 struct A 的构造函数后,它开始工作。
问题是:为什么std::make_from_tuple() 需要用户定义的构造函数而不是默认构造函数?
【问题讨论】:
标签: c++ tuples c++17 default-constructor