Следуют ли локальные переменные потока g ++ правилам инициализации по умолчанию? - PullRequest
3 голосов
/ 02 июля 2010

Использование g ++ для объявления функционально-статического локального хранилища потока:

void f() {
    static __thread somePodStruct thing;
    ...
}

Могу ли я предположить, что thing будет инициализироваться нулем?

1 Ответ

2 голосов
/ 02 июля 2010

Согласно документации GCC:

http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Thread-Local.html

В C ++, если для локальной переменной потока присутствует инициализатор, это должно быть выражение-константа, как определено в 5.19.2 стандарта ANSI / ISO C ++.

Таким образом, вы можете явно установить его на ноль.
Таким образом, чтобы быть в безопасности, без каких-либо отрицательных сторон, вы можете получить нулевую инициализацию, явно сделав это самостоятельно.

...