spécialisation d'un foncteur
	
	
		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:
	Code:
	
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;
} | 
 Même en commentant l'intérieur ca passe pas. L'erreur du compilateur (g++) est très  précis
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.
	Code:
	
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; | 
 J'avoue la source du stl_function.h copié/collé ca sert a rien...
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