c++ - 是否可以通过重复的 std::tuple 的类型名称获取?

标签 c++ c++11

using Name = std::string;
using NodeType = int;
using ElementType = int;

std::tuple<Name, NodeType, ElementType> myTuple("hi", 12, 42);

cout<<std::get<NodeType>(myTuple)<<endl;

这会产生编译错误。

我可以使用 std::get<1>(myTuple)但读起来并不容易 std::get<NodeType>(myTuple) ,在这种情况下,有什么办法可以按类型获取值吗?

最佳答案

NodeTypeElementType是同一类型,即inttypedefusing 不会创建新类型,只会创建名称。

所以不,您不能按类型获取最后一个条目中的任何一个,因为它们的类型在元组中不是唯一的。

关于c++ - 是否可以通过重复的 std::tuple 的类型名称获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38919479/

相关文章:

c++ - 为什么数组元素长度的地址计算可以被 2 的幂整除更有效?

c++ - Direct2D 深度缓冲区

c++ - 使用删除-删除范例将元素从一个 vector move 到另一个 vector

C++11:GCC 4.8 静态 thread_local std::unique_ptr 未定义引用

c++ - 未调用移动构造函数

c++ - 隐式提升以避免 std::partial_sum 溢出

c++ - Clion 无法打开输出文件,权限被拒绝

c++ - 握手失败 : certificate verify failed (Boost ASIO)

c++ - 我收到一条错误消息,指出只有虚拟函数可以标记为覆盖

c++ - 使用 gcc 的本地拷贝进行编译,不兼容 libstdc++