web-dev-qa-db-ja.com

「auto const」と「const auto」は同じですか?

auto constconst autoの間に意味上の違いはありますか、それとも同じ意味ですか?

69
steffen

const修飾子は、左に何もない場合を除いて、すぐ左のタイプに適用され、その後、すぐ右のタイプに適用されます。ええ、それは同じです。

81
AJG85

考案された例:

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

abはどちらもchar* const型です。キーワードauto(ここではconst char* a)の代わりに、単にタイプを「挿入」できるとは思わないでください。 constキーワードは、autoが一致するタイプ全体に適用されます(ここではchar*)。

18
AndiDog