【发布时间】:2018-09-07 08:12:14
【问题描述】:
我在 Visual C++ 2017 中使用 C++17,我正在使用 std::forward_as_tuple 创建引用的 std::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
}
【问题讨论】:
标签: c++ c++17 perfect-forwarding stdtuple