Estoy especializado en 'menos' (predicado) para un tipo de datos.Especialización de 'plantilla <class _Tp> estructura std :: menos' en el espacio de nombres diferente
El código es el siguiente:
template<>
struct std::less<DateTimeKey>
{
bool operator()(const DateTimeKey& k1, const DateTimeKey& k2) const
{
// Some code ...
}
}
Al compilar (g ++ 4.4.1 en Ubuntu 9.10), me sale el error:
La especialización de 'std :: plantilla de estructura menos' en diferentes espacio de nombres
que hice algunas investigaciones y encontró que había una 'solución' que involucró a envolver la especialización en un espacio de nombres std - es decir, cambiar el código para:
namespace std {
template<>
struct less<DateTimeKey>
{
bool operator()(const DateTimeKey& k1, const DateTimeKey& k2) const
{
// Some code ...
}
}
}
que de hecho, cierra el compilador. Sin embargo, esa solución fue de un puesto de 5 años de edad (por el "gran" Victor Bazarof no menos [juego de palabras no intencionado]). ¿Sigue siendo esta solución el camino a seguir, o hay una mejor manera de resolver esto, o la "vieja manera" sigue siendo válida?
Sobrecarga 'DateTimeKey :: operator <'? – kennytm