Re[2]: Локальные переменные
От: LaptevVV Россия  
Дата: 17.08.25 12:18
Оценка:
Спасибо.
R>В этом пункте расписано, что из себя представляет zero-initialization, а не когда она применяется. А чтоб понять применение, там нужно отслеживать целую цепочку пунктов, включая пункты из других разделов. И заканчивается эта цепочка вот здесь: https://timsong-cpp.github.io/cppwp/dcl.init.general#7.4
R>

R>(7.3) — Otherwise, no initialization is performed.

Да, это я тоже читал.
R>Наиболее интересным в данном контексте является, пожалуй, вот этот пункт (С++20):
R>https://timsong-cpp.github.io/cppwp/n4861/basic.indet#1
R>

R>6.7.4 Indeterminate values
R>1 When storage for an object with automatic or dynamic storage duration is obtained, the object has an indeterminate value, and if no initialization is performed for the object, that object retains an indeterminate value until that value is replaced ([expr.ass]). [ Note: Objects with static or thread storage duration are zero-initialized, see [basic.start.static]. — end note]

R>В общем, принципиальных изменений не наблюдается. А то, что в каких-то отдельных случаях неинициализированные переменные содержат нули, следует трактовать просто как стечение обстоятельств, я думаю.
Просто в мингв 12.2 локальные переменные точно не обнулялись.
А сейчас в мингв 14.2 что-то непонятно.

R>Как подкрепление сказанному, практический пример (С++26):

Ну, до С++26 еще пилить и пилить.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.