Skip to content

Commit 223a9ad

Browse files
Fix #12920 FP functionConst for ref qualified member function (#6582)
1 parent 4064e44 commit 223a9ad

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

lib/checkclass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2175,7 +2175,7 @@ void CheckClass::checkConst()
21752175
continue;
21762176

21772177
const bool suggestStatic = memberAccessed != MemberAccess::MEMBER && !func.isOperator();
2178-
if ((returnsPtrOrRef || func.isConst()) && !suggestStatic)
2178+
if ((returnsPtrOrRef || func.isConst() || func.hasLvalRefQualifier()) && !suggestStatic)
21792179
continue;
21802180

21812181
std::string classname = scope->className;

test/testclass.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ class TestClass : public TestFixture {
214214
TEST_CASE(const_shared_ptr);
215215
TEST_CASE(constPtrToConstPtr);
216216
TEST_CASE(constTrailingReturnType);
217+
TEST_CASE(constRefQualified);
217218
TEST_CASE(staticArrayPtrOverload);
218219
TEST_CASE(qualifiedNameMember); // #10872
219220

@@ -7496,6 +7497,16 @@ class TestClass : public TestFixture {
74967497
ASSERT_EQUALS("", errout_str());
74977498
}
74987499

7500+
void constRefQualified() { // #12920
7501+
checkConst("class Fred {\n"
7502+
"public:\n"
7503+
" const Data& get() & { return data; }\n"
7504+
"private:\n"
7505+
" Data data;\n"
7506+
"};\n");
7507+
ASSERT_EQUALS("", errout_str());
7508+
}
7509+
74997510
void staticArrayPtrOverload() {
75007511
checkConst("struct S {\n"
75017512
" template<size_t N>\n"

0 commit comments

Comments
 (0)