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
|
template <int DIMCOUNT> class MyClass // 1er template
{
typedef Node....
indexs *....
...
// Fonction de comparaison<CurrentDim>
template <int CurentDim>
struct My_less_equal: public std::binary_function<Node, Node, bool> {
bool operator()(const Node& _Left, const Node& _Right) const {
return (_Left.data[CurDim] <= _Right.data[CurDim]);
}
};
....
// ici le problème
for (unsigned i=1; i<DIMCOUNT; i++) {
std::sort(indexs[i][0], indexs[i][size], My_less_equal<i>());
// error C2971 une variable local ne peut pas être utilisé comme argument
}
// ne fonctionne pas
// J’aimerais qu'il fonctionne de la même manière que:
std::sort(indexs[0][0], indexs[0][size], My_less_equal<0>()); //=> ok
std::sort(indexs[1][0], indexs[1][size], My_less_equal<1>()); //=> ok
std::sort(indexs[2][0], indexs[2][size], My_less_equal<2>()); //=> ok
// Version qui fonctionne pour DIMCOUNT = 3
...
} |
Partager