specialisation template & error à la compilation
Bonjour à tous,
J'ai pondu une structure comme ceci :
Code:
1 2 3 4 5
| template<int I>
struct GetValue
{
static const int value;
}; |
Ensuite à différents endroits, dans des headers :
Code:
1 2 3 4
| template<> const int GetValue<1>::value = 14;
template<> const int GetValue<2>::value = 6;
template<> const int GetValue<3>::value = 23;
etc. |
Le soucis c'est que plusieurs fichiers *.cpp ont besoin de ces spécialisations, et autant sous Windows ça passe correctement, qu'avec g++ le linker râle :
lib.a (obj1.o):(.rodata+0x448): définitions multiples de « GetValue<1>::value »
lib.a (obj2.o):(.rodata+0x43c): défini pour la première fois ici
Et ce pour toutes les valeurs de <I> que j'ai pu spécialiser
Que puis-je faire dans ce cas ?
Merci à vous,
A bientôt