是否可以通过使用元组中包含的参数来初始化类的成员(或调用超类构造函数)?
请注意,我知道weights
和Cov_matrix
,但是在这种情况下不能使用它们。
考虑者std::make_from_tuple()
可不可复制,不可可默认构造,不可可移动,不可可分配,没有别的。实例化它的唯一方法是使用std::apply()
提供的参数。
能做到吗?
我的尝试失败了,尽管“生成的扩展模式不包含任何参数包”,尽管index_sequence生成的应该是一个。
sometype
答案 0 :(得分:2)
如果您坚持不使用std::make_from_tuple()
,则需要另一种间接方式:
public:
explicit node(const std::tuple<Args...>& args_tuple) :
node(args_tuple, std::make_index_sequence<sizeof...(Args)>{})
{ }
private:
template<class Tuple, std::size_t... is>
node(const Tuple& args_tuple, std::index_sequence<is...>) :
value(std::get<is>(args_tuple)...)
{ }