constexpr uint8_t count = 50;
static_assert(std::is_same_v<uint8_t, decltype(count)>, "fail");
结果:“失败”
为什么不是那种类型?
这是因为decltype(count)
是const uint8_t
constexpr
暗示const
,因此count
的类型实际上是constUINT8_T
。
因此这将编译:
static_assert(std::is_same_v<const uint8_t, decltype(count)>, "fail");
看这里。
您还可以将类型衰减为最简单的形式,去掉所有常量
和其他内容:
#include <type_traits>
#include <cstdint>
int main() {
constexpr uint8_t count = 50;
static_assert(std::is_same_v<uint8_t, std::decay_t<decltype(count)>>, "fail");
// more code...
}