Вопрос по const, c++, auto, c++11 – Являются ли «auto const» и «const auto» одинаковыми?

47

Есть ли разница или это то же самое?

Я могу дать более точный, но законный ответ. Поскольку вы не связались с языковым юристом, на данный момент я предполагаю, что вам не нужно так много подробностей. Arne Vogel
Он такой же, как и любой другой тип. chris

Ваш Ответ

2   ответа
75

const Квалификатор применяется к типу непосредственно слева, если слева нет ничего, тогда он применяется к типу справа справа. Так что да, то же самое.

Если ничего не осталось, то это правильно (и наоборот) :-)
Это не совсем то, как это работает, спецификаторы и квалификаторы (которые предшествуютdeclarator) может появляться в любом порядке, напримерlong volatile unsigned const typedef long cvull;, Тип не (полностью) ни слева, ни справа отconst.
16

Придуманный пример:

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*).

Похожие вопросы