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 :
J'ai un joli
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }pour la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part error: expected primary-expression before '>' token
et la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part SvVLoop<I + 1, I_MAX>::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.)
Code : Sélectionner tout - Visualiser dans une fenêtre à part SvVLoop<0, N>::SvV<N, T>(dt, _v);
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
Une aide ne serait pas de refus
Partager