CodeQL documentation

Constant return type on member

ID: cpp/member-const-no-effect
Kind: problem
Security severity: 
Severity: warning
Precision: very-high
Tags:
   - maintainability
   - readability
   - language-features
Query suites:
   - cpp-security-and-quality.qls

Click to see the query in the CodeQL repository

This rule finds member functions with a superfluous const qualifier on their return type. This might be caused by confusion about how to declare a const method. In particular, when C++11 trailing return types are used, it becomes much easier to mis-declare a const method by putting const on the wrong side of ->.

Recommendation

The superfluous const qualifier should be removed, as it serves no purpose. If the return type contains embedded qualifiers, then care should be taken to remove only the superfluous one.

Alternatively, if the intention was to have a const method, then the qualifier should be moved to immediately after the argument list.

Example

struct S {
  int val;
  
  // The const has no effect here.
  auto getValIncorrect() -> const int {
    return val;
  }
  
  // Whereas here it does make a semantic difference.
  auto getValCorrect() const -> int {
    return val;
  }
};
  • © GitHub, Inc.
  • Terms
  • Privacy
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy