提问者:小点点

static_assert中的C++decltype[重复]


constexpr uint8_t count = 50;

static_assert(std::is_same_v<uint8_t, decltype(count)>, "fail");

结果:“失败”

为什么不是那种类型?


共3个答案

匿名用户

这是因为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...
}

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(static_assert|中|c++decltype|重复)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?