diff --git a/lib/checkother.cpp b/lib/checkother.cpp index 868a9621976..9846710f78a 100644 --- a/lib/checkother.cpp +++ b/lib/checkother.cpp @@ -1372,7 +1372,7 @@ void CheckOther::checkPassByReference() continue; const bool isConst = var->isConst(); - if (isConst) { + if (isConst && !var->isArray()) { passedByValueError(var, inconclusive, isRangeBasedFor); continue; } diff --git a/test/testother.cpp b/test/testother.cpp index f43cd28a6a8..51f71b935dd 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -2333,6 +2333,10 @@ class TestOther : public TestFixture { "};\n"); ASSERT_EQUALS("", errout_str()); + check("void f(const std::vector v[2]);\n" // #13052 + "int g(const std::array, 2> a) { return a[0][0]; }\n"); + ASSERT_EQUALS("[test.cpp:2]: (performance) Function parameter 'a' should be passed by const reference.\n", errout_str()); + /*const*/ Settings settings1 = settingsBuilder().platform(Platform::Type::Win64).build(); check("using ui64 = unsigned __int64;\n" "ui64 Test(ui64 one, ui64 two) { return one + two; }\n",