左に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」と呼ぼうとしている人たちがいるようです。
Tag yourself pic.twitter.com/sR6nEr7VU2
— Simon Brand (@TartanLlama) 2017年11月6日
日本では「僕は西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
)みたいですね。