Это расширение существующей функции, которая помогает читабельности в моем опыте.
if (auto* ptr = get_something()) {
}
Здесь мы оба создаем переменную ptr
и проверяем, что она не равна нулю.Область действия ptr
ограничена тем, где она действительна.Гораздо проще убедить себя в том, что любое использование ptr
действительно.
Но что, если мы говорим о чем-то, что не преобразуется в bool
таким образом?
if (auto itr = find(bob)) {
}
Это не работает.Но с помощью этой новой функции мы можем:
if (auto itr = find(bob); itr != end()) {
}
Добавить предложение, говорящее «когда эта инициализация действительна».
По сути, это дает нам набор токенов, которые означают «инициализировать некоторые»выражение, и когда он действителен, сделайте некоторый код. Если он недействителен, откажитесь от него. "
Было нелепо делать трюк с тестом указателя начиная с C ++ 98.Как только вы это охватите, это расширение будет естественным.