我已经开始使用这种类型的构造,它依赖于 C++20 的 lambda 显式模板参数:
template<typename... Ts>
struct Foo
{
std::tuple<Ts...> bars;
auto get_labels(const std::array<std::size_t,sizeof...(Ts)>& indices) const
{
// construct tuple from bar labels
return [&]<std::size_t... Is>(std::index_sequence<Is...>) {
return std::make_tuple(std::get<Is>(bars).get_label(indices[Is])...);
}(std::index_sequence_for<Ts...>{});
}
};
在 C++17 或 C++14 中是否有相对优雅的方法可以做到这一点?或者我现在应该将 C++20 作为一项要求?