始める前に、これはスタイルに関する意見の質問ではありません。関数の前にストレージ修飾子を配置する必要がある理由と、実際に配置する必要があるかどうかを知りたいです。哲学的な議論が続きます。
非常に友好的な C++ の文法警官が、オブジェクトの修飾子は、変更する必要があるものの後に常に配置するように教えてくれました。例えば:
int const myint; // good
const int myint; // bad
この考え方は、私は彼または彼女の推論が非常に好きですが、修飾子は常にその前にプロパティを変更するということです。したがって、メソッドを宣言するときの論理規則は次のとおりです。
const int const fun(); // bad
int const fun() const; // good
これが私のやり方であると仮定すると、これについてもう一度議論を始めることなく、関数の前にストレージ修飾子 (static など) を配置する必要があるのはなぜでしょうか? そのため、const 関数と static 関数を隣り合わせにすると、紛らわしいことに次のようになります。
int fun1() const;
static int fun2();
概念的には、このコンテキストの static キーワードと const キーワードには明確に関連する役割があることを考えると (どちらも、関数ができることとできないことを広義に変更します)、同様の文法規則が適用されるべきではないでしょうか? 私はこれを行うことができるようにしたい:
int fun1() const;
int fun2() static; // why doesn't this work?