Je regardais un morceau de code écrit par d'autres quand j'ai vu ça :
a(), void(), b();
où les deux a
y b
sont des instances d'une classe de modèle définie par l'utilisateur, qui est destinée à agir comme une fonction en surchargeant operator()
qui renvoie l'instance appelante elle-même.
Une partie de la classe :
template <typename T>
class SomeClass{
public:
SomeClass& operator()(void);
const SomeClass& operator()(void) const;
}
Les déclarations de retour pour les deux surcharges sont les suivantes :
template <typename T>
SomeClass<T>& SomeClass<T>::operator()(void){
// do stuff
return *this;
}
template <typename T>
const SomeClass<T>& SomeClass<T>::operator()(void) const{
// do stuff
return *this;
}
Que fait le void()
entre eux ? Je trouve ça étrange.