Является ли С++ 11 автоматическим типом опасным?
Возможный дубликат:
Сколько стоит слишком сильное ключевое слово С++ 0x auto
Новое ключевое слово "auto" ; Когда он должен использоваться для объявления типа переменной?
В С++ 11, введя переменную auto
вместо, скажем, int
, позволит компилятору автоматически использовать правильный тип, выведенный из контекста инициализации. Это очень удобно в ситуациях, когда тип очевиден, но скучно писать. Есть ли подводные камни, о которых нужно знать, или причины, по которым кто-то избегал бы этого использовать?
Ответы
Ответ 1
Мой личный опыт - это авто для универсального кода или таких вещей, как диапазон для цикла, но вы можете получить что-то вроде
auto count = getCount();
if (count < 0) {
// do something
}
Если getCount() возвращает беззнаковое число, вместо того, что вы ожидаете (int), вы даже не получите предупреждение.