左にconst vs 右にconst

const 修飾

みなさんは const 修飾してますか?

ほとんどの人はほとんどのコードで当然のように const 修飾してます。当たり前ですね。

const T& vs T const &

さてみなさんは const 修飾するときに、左側に const を書きますか?右側に const を書きますか?

// 左に const
template<class T>
void f(const T&) {}
// 右に const
template<class T>
void f(T const&) {}

プロジェクトごとに、個人的にあるいは組織の中で、どちらかで統一していると思います。

West-const vs East-const

コーディングスタイルを統一するためにはスタイルをあらかじめ決める必要があります。 それぞれのスタイルに名前がついていると話がしやすいですね。

左側に const を 「West-const」、右側に const を「East-const」と呼ぼうとしている人たちがいるようです。

日本では「僕は西const派」とか「東constに決まってるだろ」とか全然聞いたことがありません!(笑)

C++コアガイドライン (C++ Core Guidelines)では?

CppCoreGuidelines/CppCoreGuidelines.md at master · isocpp/CppCoreGuidelines · GitHub

const int x = 7;    // OK
int const y = 9;    // bad

const int *const p = nullptr;   // OK, constant pointer to constant int
int const *const p = nullptr;   // bad, constant pointer to constant int

というわけで、West-const 派(左側に const)みたいですね。