(Re)Bonjour,

J'ai des petits soucis concernant les templates... de templates . Pour faire simple, j'ai une classe Vector< TYPE_UTILISE, NB_DIMENSION > que je dois passer en template de classe dans une autre structure AutreStruct< class C, [...]>. Je voudrais reconnaitre alors la structure Vector de deux manières : quelque soient TYPE_UTILISE et NB_DIMENSION et, ensuite, quelque soit NB_DIMENSION en sachant que tout cela se passe au niveau d'une fonction...

Pour éclaircir :
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
21
22
23
24
25
26
27
28
29
30
31
32
 
template<typename TYPE, int DIMENSION>
struct Vector
{
     typedef TYPE* iterator;
     //blabla...
};
 
template< class C1, class C2>
struct AutreStruct
{
     //blabla
};
 
//Le problème est ici :
      //La fonction de base
template< class T, class U>
AutreStruct< T, U> MaFonction( const T &t, const U &u)
{
      //blabla
}
 
      //La spécialisation qui ne fonctionne pas
      //C'est le premier cas qui m'intéresse ici, puisque la fonction ne doit juste
      //reconnaitre que le type Vector et peu importe le nombre de dimensions
      //ou le type utilisé
template<class U>
template<typename TYPE, int DIMENSION>
AutreStruct< Vector<TYPE, DIMENSION>::iterator , U> MaFonction( const T &t, const U &u)
{
      //blabla
}
Erreur retournée par GCC :
error: type/value mismatch at argument 1 in template parameter list for `[...]'
Merci de votre aide.