【发布时间】:2022-11-30 03:15:12
【问题描述】:
我正在尝试检查数组元素的类型是否为特定类型。请参阅以下内容。
#include <type_traits>
#include <cstdint>
#include <iostream>
int main() {
using arr = std::int32_t[2][2];
std::cout << std::is_same_v<decltype(std::declval<arr>()[0][0]), std::int32_t> << std::endl;
}
>>> 0
为什么上面的代码打印为零?我还尝试获取有关该类型的其他一些数据。请参阅以下内容。
#include <type_traits>
#include <cstdint>
#include <iostream>
#include <typeinfo>
int main() {
using arr = std::int32_t[2][2];
std::cout << typeid(decltype(std::declval<arr>()[0][0])).name() << std::endl;
std::cout << sizeof(decltype(std::declval<arr>()[0][0])) << std::endl;
}
>>> i
>>> 4
从上面可以看出,类型是一个整数和4个字节,就像一个std::int32_t。我做错了什么?我是否误解了 typeid 输出?谢谢。
我正在使用 g++ 12.1.0 为 c++ 17 编译。
【问题讨论】:
-
为什么是
std::int32_t而不是int32_t? -
@tadman 我只是随机选择了一个惯例。
-
这当然是随机的。
-
@tadman 当然。这当然也没有关系......特别是关于这个问题。
-
我只是做一个观察,仅此而已。别管我。
标签: c++