Come posso definire una variabile membro statica che è anche thread locale all'interno di una classe template? Penso di aver capito come farlo in GCC, ma vorrei confermare che funzionerà correttamente in termini di collegamento, inizializzazione e risoluzione. Anche la traduzione in un altro compilatore sarebbe utile (come MSVC), quindi posso ottenere una bella macro per farlo.Come dichiarare un thread statico locale in un modello
template<typename T>
class my_class
{
struct some_type { };
static __thread some_type * ptr;
};
template<typename T>
__thread typename my_class<T>::some_type * my_class<T>::ptr = 0;
Un metodo alternativo per ottenere la stessa cosa sarebbe anche male (cioè, di utilizzare un filo distinto locale per istanza template).