Génération de code par templates [ G++ ]
Bonjour,
Cela fait un petit moment que je n'ai plus touché au C++, et je peine à comprendre une erreur de compilation de G++. Le même code compile sans problème avec visual (et semble fonctionner).
Voilà l'extrait qui pause problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| template <int I, int I_MAX> struct SvVLoop
{
template<int N, class T>
static inline void SvV(T dt[N], T _v)
{
dt[I] = _v;
SvVLoop<I + 1, I_MAX>::SvV<N, T>(dt, _v);
}
};
template <int I_MAX> struct SvVLoop<I_MAX, I_MAX>
{
template <int N, class T>
static inline void SvV(T dt[N], const T _v) {}
};
template <int N, class T>
inline
VectorND<N, T>::VectorND(T _v)
{
SvVLoop<0, N>::SvV<N, T>(dt, _v);
} |
J'ai un joli
Code:
error: expected primary-expression before '>' token
pour la ligne
Code:
SvVLoop<I + 1, I_MAX>::SvV<N, T>(dt, _v);
et la ligne
Code:
SvVLoop<0, N>::SvV<N, T>(dt, _v);
Le problème est que si je supprimer le "<N, T>", le compilateur m'informe qu'il ne parvient pas à trouver le modèle de fonction correspondant. (Je crois qu'il en est de même pour visual, de mémoire.)
Je ne suis pas vraiment au point avec ces histoires de méta-programmation, donc je ne comprend pas trop ce qu'il m'arrive :aie:
Une aide ne serait pas de refus :)