【发布时间】:2018-02-05 10:30:59
【问题描述】:
我正在尝试设置引用元组中引用的对象的值,但无法正确解包语法。
namespace detail {
template<class... Types, std::size_t... Is>
void assign_values_helper(std::tuple<Types&...>& dest, std::index_sequence<Is...>, Types... values)
{
std::get<Is>(dest)... = values...;
}
} // end namespace detail
template<class... Types>
void assign_values(std::tuple<Types&...>& dest, Types... values)
{
assign_values_helper(dest, std::index_sequence_for<Types...>{}, values...);
}
我在 assign_values_helper 中收到关于 Is 未扩展的错误。
assign_values 的使用示例是
int a {};
double b {};
std::tuple<int&, double&> tup = {a, b};
assign_values(tup, 1, 2.0);
【问题讨论】:
-
为什么不使用
std::make_tuple? -
@Holt 怎么样?注意被引用的对象不会改变,只有它们的值会改变。
-
错误的评论编辑,
std::tie不起作用,因为它会重新分配元组,但std::make_tuple在这里有效。
标签: c++ tuples c++14 variadic-templates