Статические области видимости функции или переменные thread_local инициализируются в первой записи в C ++ 11?

В C ++ 11 инициализация статических переменных области видимости функции / thread_local гарантированно поточно-ориентирована. Они также гарантированно инициализируются при входе в функцию?

0

Решение

Согласно [stmt.dcl] / 4 (выделено мое):

Инициализация нуля (8.5) всех переменных области блока со статической продолжительностью хранения (3.7.1) или хранением потока
Продолжительность (3.7.2) выполняется до любой другой инициализации. Постоянная инициализация (3.6.2)
выполняется объектная область со статической продолжительностью хранения, если применимо прежде чем его блок впервые введен.
Реализация может выполнять раннюю инициализацию других переменных области блока со статическим или
продолжительность хранения потока при тех же условиях, что реализация может статически инициализировать
переменная со статической или продолжительностью хранения потока в области имен (3.6.2). В противном случае такая переменная
инициализируется первый раз контроль проходит через свою декларацию; такая переменная считается инициализированной после
завершение его инициализации.

Я не уверен, что вы подразумеваете под «входом в функцию», но все ответы приведены в абзаце, который я цитировал.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]