Why there is no concept of "const-correctness" for class's static member functions?

c++, const-correctness, static-members

Solution

`cv-qualifiers` affect the function's signature. So you could have:

class A {
  static int s_common;
public:
  static void getCommon () const {  };
  static void getCommon () {  };
};

Now... how would you call the `const` one? There's no `const` object to call it on (well, you could call it on a `const` object, but that's not the point).

I'm just guessing here, there probably are other reasons. :)

Problem

Use case: ``` class A { static int s_common; public: static int getCommon () const { s_common; }; }; ``` Typically this results in an error as: error: static member function ‘static int A::getCommon()’ cannot have cv-qualifier This is because `const`ness applies only to the object pointed by `this`, which is not present in a `static` member function. However had it been allowed, the `static` member function's "const"ness could have been easily related to the `static` data members. Why is this feature is not present in C++; any logical reason behind it ?

Original source

Related problems