【发布时间】:2020-10-11 07:22:14
【问题描述】:
我目前正在学习 C++ 中的元编程,并且正在尝试查看元组的元素是否是指针。我试过这种方法:
int a = 3, b = 4;
auto tup = std::make_tuple(&a, b);
std::cout << std::is_pointer<decltype(std::get<0>(tup))>::value; //prints 0
我觉得这很奇怪,所以我检查了clang推断的类型(我使用的是clang-10),即
__tuple_element_t<0UL, tuple<int *, int>
而且它看起来像某种内部类型。
为什么我会得到这种奇怪的类型,以及获取元组元素的实际类型的正确方法是什么?我只有一个使用中间 auto 变量的解决方案,但几乎不是最优的。
【问题讨论】:
标签: c++ types template-meta-programming stdtuple