Я пытался проверить вывод автоматического типа. Как Скотт Мейерс (Эффективный современный C++), так и язык программирования C++ Бьярна Страуструпа упоминают, что выполнение
auto val {10};
сделает вывод, что val имеет тип списка инициализации.
Я читал, что это было изменено в С++ 17, так что если в списке есть только один элемент, то вместо этого auto будет выводиться к типу этого элемента.
Однако я протестировал это с последними компиляторами gcc (v10) и clang (V11), явно указав стандарт С++ 11, и я не увидел ожидаемого поведения.
auto A {1.0};
std::cout << typeid(A).name();
печатает d на экран
тогда как
auto A={1.0};
std::cout << typeid(A).name();
выводит St16initializer_listIdE на экран.
Это то же самое независимо от того, являюсь ли я видом
gcc -std=c++11
or
gcc -std=c++17
и аналогично для clang.
Я понимаю, что это было изменено в C++17, но почему тогда я не вижу старого поведения? Или я неправильно понимаю?
Спасибо