Re[13]: "auto" vs "auto*" для указателя
От: Maniacal Россия  
Дата: 20.03.18 09:03
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Работает не так как ожидается?

КД>А не надо ожидать

Просто нужно знать, согласен. Никогда не заморачивался с константными указателями. Только с указателями на константные данные.

В цикле вида
std::map<int, int> mapInt2Int;
for(auto ix : mapInt2Int) {}

тоже следует помнить, что ix будет иметь тип std::pair<int, int>, а не std::map<int, int>::iterator
Re[14]: "auto" vs "auto*" для указателя
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 20.03.18 09:08
Оценка:
Здравствуйте, Maniacal, Вы писали:

КД>>Работает не так как ожидается?

КД>>А не надо ожидать

M>Просто нужно знать, согласен. Никогда не заморачивался с константными указателями. Только с указателями на константные данные.


Это один из способов борьбы с опечатками.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[12]: "auto" vs "auto*" для указателя
От: uzhas Ниоткуда  
Дата: 20.03.18 11:18
Оценка: +2
Здравствуйте, Maniacal, Вы писали:

M>Ещё лучше. const auto для int* преобразуется не в const int*, а в int* const

M>Впрочем, та же фигня с typedef

та же фигня и с typedef и c шаблонами, когда пишешь const T t;.
эти моменты сделаны однообразно, что есть плюс
Re[13]: "auto" vs "auto*" для указателя
От: Maniacal Россия  
Дата: 20.03.18 11:47
Оценка:
Здравствуйте, uzhas, Вы писали:

U>та же фигня и с typedef и c шаблонами, когда пишешь const T t;.

U>эти моменты сделаны однообразно, что есть плюс

То что везде одинаково не может не радовать.

Кстати, методом научного тыка не так давно пришлось догадаться, что в коде вида
struct A { ... };

struct B
{
  A* pa;
};

void func1(const B& b)
{
  func2(b.pa);
}

параметр b.pa в вызове func2 имеет тип A* const&
void func2(A* const& pa) { ... }

Иначе ошибка "подходящая функция не найдена". Хорошо, что в тексте сообщения об ошибке этот тип упоминался, ни за что бы не догадался.
Re[11]: "auto" vs "auto*" для указателя
От: _hum_ Беларусь  
Дата: 20.03.18 18:22
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, Maniacal, Вы писали:


R>>>Хорошо, а если мы немного перепишем первый вариант:


R>>>
R>>>int a = 0;
R>>>auto const b = &a;
R>>>


R>>>каковы будут твои ожидания в этом случае?


M>>Вот тут, исходя из того, что &a это int* логично было бы, чтобы auto заменился на int*, т.е. на

M>>
M>>int* const b = &a;
M>>


R>Так и имиенно это и происходит Остается совсем чуть-чуть — понять, что объявления auto const b и const auto b эквивалентны. Таковы требования стандарта язка.


хм.. а если хочется проконтролировать, что указатель именно на константное значение (неважно, какого типа), как тогда писать?
Re[12]: "auto" vs "auto*" для указателя
От: rg45 СССР  
Дата: 20.03.18 18:38
Оценка:
Здравствуйте, _hum_, Вы писали:


R>>>>
R>>>>int a = 0;
R>>>>auto const b = &a;
R>>>>


R>>>>каковы будут твои ожидания в этом случае?


M>>>Вот тут, исходя из того, что &a это int* логично было бы, чтобы auto заменился на int*, т.е. на

M>>>
M>>>int* const b = &a;
M>>>


R>>Так и имиенно это и происходит Остается совсем чуть-чуть — понять, что объявления auto const b и const auto b эквивалентны. Таковы требования стандарта язка.


__>хм.. а если хочется проконтролировать, что указатель именно на константное значение (неважно, какого типа), как тогда писать?


int a = 0;
const auto* b = &a;        // const int*;
const auto* const c = &a;  // const int* const;
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[13]: "auto" vs "auto*" для указателя
От: _hum_ Беларусь  
Дата: 20.03.18 19:29
Оценка:
Здравствуйте, rg45, Вы писали:

R>>>Так и имиенно это и происходит Остается совсем чуть-чуть — понять, что объявления auto const b и const auto b эквивалентны. Таковы требования стандарта язка.


__>>хм.. а если хочется проконтролировать, что указатель именно на константное значение (неважно, какого типа), как тогда писать?


R>
R>int a = 0;
R>const auto* b = &a;        // const int*;
R>const auto* const c = &a;  // const int* const;
R>


аа, ну тогда ок. можно смириться с тем, что const auto приравнивается к auto const
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.