Sto specializzando il 'less' (predicato) per un tipo di dati.Specializzazione di 'modello <class _Tp> struct std :: less' in diversi namespace
Il codice simile a questo:
template<>
struct std::less<DateTimeKey>
{
bool operator()(const DateTimeKey& k1, const DateTimeKey& k2) const
{
// Some code ...
}
}
Quando si compila (g ++ 4.4.1 su Ubuntu 9.10), ottengo l'errore:
specializzazione di 'template struct std :: meno' in diversi namespace
ho fatto qualche ricerca e ha scoperto che c'era una 'soluzione' che ha coinvolto avvolgendo la specializzazione in un namespace std - vale a dire cambiare il codice a:
namespace std {
template<>
struct less<DateTimeKey>
{
bool operator()(const DateTimeKey& k1, const DateTimeKey& k2) const
{
// Some code ...
}
}
}
che, in effetti, spegne il compilatore. Tuttavia, quella soluzione era da un post di 5 anni (dal 'grande' Victor Bazarof non meno [punk non intenzionale]). Questa soluzione è ancora la strada da percorrere, oppure esiste un modo migliore per risolverlo oppure la "vecchia maniera" è ancora valida?
Sovraccarico 'DateTimeKey :: operator <'? – kennytm