У меня есть два кортежа: один с данными, которые я хочу, а другой со списком индексов для первого кортежа. Я хочу использовать второй кортеж для доступа к элементам из первого кортежа, используя std::get
, но, похоже, это не работает:
const auto tup = std::make_tuple(4, 5, 6);
const auto indeces = std::make_tuple(0, 1, 2);
const int index = std::get<0>(indeces);
const int value = std::get<index>(tup); // won't compile
// value should equal 4
Конечно, очевидно, почему это не удается, если учесть, что std::get
не вернет constexpr
:
constexpr int index = std::get<0>(indeces); // won't compile
Тем не менее, вся необходимая информация предоставляется во время компиляции, поэтому я чувствую, что способ должен быть. Есть?
Примечание. Мой кортеж indeces
начинает свою жизнь как пакет параметров целых чисел. Я сделал его кортежем, потому что надеялся, что с ним будет легче работать, но это может быть не так. Если кто-нибудь может увидеть способ обойти кортеж indeces
и использовать целые числа пакета параметров напрямую для индексации первого кортежа, это тоже будет долгожданным ответом.