auto const
とconst auto
の間に意味上の違いはありますか、それとも同じ意味ですか?
const
修飾子は、左に何もない場合を除いて、すぐ左のタイプに適用され、その後、すぐ右のタイプに適用されます。ええ、それは同じです。
考案された例:
std::vector<char*> test;
const auto a = test[0];
*a = 'c';
a = 0; // does not compile
auto const b = test[1];
*b = 'c';
b = 0; // does not compile
a
とb
はどちらもchar* const
型です。キーワードauto
(ここではconst char* a
)の代わりに、単にタイプを「挿入」できるとは思わないでください。 const
キーワードは、auto
が一致するタイプ全体に適用されます(ここではchar*
)。