Как объявить локальную статичность потока в шаблоне - PullRequest
5 голосов
/ 20 ноября 2010

Как определить статическую переменную-член, которая также является локальной для потока внутри класса шаблона?Я думаю, что я выяснил, как это сделать в GCC, но хотел бы подтвердить, что это будет работать правильно с точки зрения связывания, инициализации и разрешения.Также был бы полезен перевод в другой компилятор (например, MSVC), так что я мог бы получить хороший макрос для этого.использовать отдельный локальный поток для каждого экземпляра шаблона).

1 Ответ

1 голос
/ 20 ноября 2010

Я считаю, что ваш код верен и будет переведен в MSVC, заменив __thread на __declspec(thread) (см. Thread Local Storage в MSDN):

template<typename T>
class my_class
{
  struct some_type { };
  static __declspec(thread) some_type * ptr;
};

template<typename T>
__declspec(thread) typename my_class<T>::some_type * my_class<T>::ptr = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...