clang ++给出以下警告(见下面的代码):
'constexpr'非静态成员函数不会隐式'const' 在C ++ 1y中;添加'const'以避免行为改变
const
应该添加到哪里? const constexpr size_t getSize() {
再次发出警告:
返回类型的'const'类型限定符无效
代码:
constexpr size_t getSize()
{
return sizeof(header);
}
答案 0 :(得分:14)
我相信它告诉你,从C ++ 1y 开始,成员函数不能在const
对象上调用。
在const
之后添加getSize()
,使其成为const
成员函数:
constexpr size_t getsize() const { ... }
答案 1 :(得分:1)
完整的测试用例:
struct S {
constexpr int getSize();
};
诊断:
tmp.cc:2:17: warning: 'constexpr' non-static member function will not be
implicitly 'const' in C++1y; add 'const' to avoid a change in
behavior [-Wconstexpr-not-const]
constexpr int getSize();
^
const
特别注意输出的底线。这称为“修复它提示”,并向您显示需要插入的文本(以及插入位置)以解决问题。
(在这种情况下,文本以前导空格开头,使其稍微不那么明确,应该在分号之前插入,而不是之后。)