Я использую C ++ 17 с Visual C ++ 2017 и создаю std::tuple
ссылок с использованием std::forward_as_tuple
.
Начиная с C ++ 14, можно получить доступ к элементу кортежа, используя тип класса вместо индекса.
Когда я пытаюсь выполнить приведенный ниже код, возникает ошибка компиляции
error C2338: duplicate type T in get<T>(tuple)
Знаете ли вы, как получить доступ к элементу в кортеже, созданном таким образом?
Ниже пример кода
struct CA {
int data_ = 0;
};
struct CB {
int data_ = 0;
};
int main()
{
CA a;
CA b;
auto joined_objects = std::forward_as_tuple(a, b);
std::cout << std::get<0>(joined_objects).data_ << std::endl; // works
std::cout << std::get<CA &>(joined_objects).data_ << std::endl; // fails
}