将 const void* const 转换为 const char* const 会产生“忽略限定符”警告,为什么?

问题描述 投票:0回答:1

我不明白为什么下面的代码会在 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));
}

https://godbolt.org/z/n8Ws9aTcq

c++ g++ compiler-warnings
1个回答
3
投票

非类非数组纯右值不能是 cv 限定的。

这意味着您的

static_cast<const char* const>(a)
static_cast<const char*>(a)
完全相同,指针本身不是 const 限定的。它只是被丢弃了,这就是警告告诉你的(第二个
const
是被忽略的)

© www.soinside.com 2019 - 2024. All rights reserved.