Portage sous Linux et g++ tatillon
Bonjour à tous,
Je suis en train de porter des bibliothèques sous Linux (g++), que j'avais développé sous Windows (MSVC).
Un des problèmes récurrent que je rencontre avec g++, est qu'il vérifie le corps d'une fonction template avant son utilisation.
Par exemple (à la main juste pour expliciter le phénomène) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
// a.h
class A
{
public:
static void SomeMethod(int i);
};
// b.h
template<int I> void ExecSomeMethod()
{
A::SomeMethod(I);
}
// c.h
ExecSomeMethod<3>(); |
Sous Windows, la vérification de la méthode template sera faire lors de son instanciation. Il sera donc possible de faire :
Code:
1 2 3 4
|
#include "b.h" // erreur avec g++
#include "a.h"
ExecSomeMethod<3>(); |
Tandis que g++ lui, lors de la première inclusion "b.h", il va protester comme quoi le symbole "A" n'existe pas..
Dans mon cas, une bibliothèque essentiellement basée sur la méta programmation, c'est fort problématique.
Y aurait-il une option à passer à g++ pour ne pas qu'il vérifie le corps des méthodes template avant qu'il ne reçoive les appels avec les paramètres ?
En vous remerciant par avance,
A bientôt :)