Bonjour,

Petit souci avec la déduction de paramèter template template. J'ai la classe suivante :

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
 
 
template <class T, bool MatrixOrientation = true>
class BidimensionalVector {
 
public:
 
inline void push_back_column(const std::vector<T>& column) {
    push_back_column_impl(column,1);
}
 
inline void push_back_column(const BidimensionalVector& column) {
    push_back_column_impl(column,column.xsize());
}
 
private:
 
template <template <class> class C>
    void push_back_column_impl(const C<T>& column, size_type ncolumn);
 
};
 
//Plus loin implémentation de la fonction push_back_column_impl
Le problème est que lorsque j'appelel cette fonction push_back_column, j'obtiens le message d'erreur suivant de Visual :
could not deduce template argument for 'const C<T> &' from 'const std::vector<_Ty>'
with
[
T=double
]
and
[
T=double
]
and
[
_Ty=double
]
Alors que le même code compile et fonctionne parfaitement avec gcc. J'avoue que je suis un poil perplexe

Bon je peux résoudre le pb en utilisant un simple paramètre template pour am fonction plutôt qu'un template de template, mais j'aimerais comprendre d'où vient le souci.

Merci d'avance.