小编Jam*_*ith的帖子

decltype(std::get<0>(tup)) 到底是什么?

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

c++ types template-meta-programming stdtuple

5
推荐指数
1
解决办法
286
查看次数

标签 统计

c++ ×1

stdtuple ×1

template-meta-programming ×1

types ×1