Apr�s avoir regard� sur la doc du C++,
Sp�cialisation des template dans les cours et tutoriels C++ : http://cpp.developpez.com/cours/
La faq sur les pr�dicats et les foncteurs:
http://c.developpez.com/faq/cpp/?page=STL#STL_predicate
Et m�me le code source de la librairie standard: voir tout en bas
J'ai beau essayer j'arrive toujours pas � sp�cialiser un template de pr�dicat comme celui-ci:
M�me en commentant l'int�rieur ca passe pas. L'erreur du compilateur (g++) est tr�s pr�cis
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <functional> template <> struct std::greater< int > { // bool operator()( const int x, const int y) const // { // return ( x > y ); // } }; int main(int argc, char *argv[]) { return 0; }
greater.cpp:3: erreur: specialization of �template<class _Tp> struct std::greater� in different namespace
Mais je vois pas ce qu'il attend.
Alors pour r�f�rence, j'essaye de zieuter dans le code source du fichier qui d�finit le greater (bits/stl_function.h), remarquez c'est d�fini dans l'espace std.
J'avoue la source du stl_function.h copi�/coll� ca sert a rien...
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 namespace std { // Ca c'est la définition du binary_function .. voir plus bas pour le greater template <class _Arg1, class _Arg2, class _Result> struct binary_function { typedef _Arg1 first_argument_type; ///< the type of the first argument /// (no surprises here) typedef _Arg2 second_argument_type; ///< the type of the second argument typedef _Result result_type; ///< type of the return type }; // Et la définition du greater template <class _Tp> struct greater : public binary_function<_Tp, _Tp, bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; } }; } // namespace std;
Edit: par contre j'ai trouv� un post que j'ai oubli� de glisser ici, qui parle de la m�me chose et qui utilise une syntaxe similaire.
http://www.developpez.net/forums/sho...d.php?t=238181
Partager