我不明白为什么下面的代码会在 GCC 中给出“type qualifiers ignored on cast result type”警告,你能解释一下吗?
#include <stdint.h>
char f(const void* const a) noexcept {
return static_cast<char>(*static_cast<const char* const>(a));
}
非类非数组纯右值不能是 cv 限定的。
这意味着您的
static_cast<const char* const>(a)
与 static_cast<const char*>(a)
完全相同,指针本身不是 const 限定的。它只是被丢弃了,这就是警告告诉你的(第二个const
是被忽略的)