我目前正在学习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
变量的解决方案,但这几乎不是最优解。