我目前正在学习 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
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪,所以我检查了推断的类型 clang(我使用的是 clang-10),这是
__tuple_element_t<0UL, tuple<int *, int>
Run Code Online (Sandbox Code Playgroud)
它看起来像是某种内部类型。
为什么我会得到这种奇怪的类型以及获取元组元素的实际类型的正确方法是什么?我只有一个使用中间auto变量的解决方案,但几乎不是最佳的。