Je cherche à ajouter des fonctionnalités à tous les types simples en C++.
Je veux écrire une seule classe modèle qui prend comme paramètre modèle le type à encapsuler et qui a ensuite tous les opérateurs définis pour que la classe encapsulée fonctionne exactement comme le type simple qu'elle encapsule.
Quelque chose comme ça :
template <typename _SimpleType_>
class Attribute
{
public:
Attribute(_SimpleType_ value){ m_value = value; }
~Attribute(){}
// Cast
operator _SimpleType_() { return(m_value); }
// Comparisons
bool operator==(const a& other) const { return a == m_value; }
etc...
private:
_SimpleType_ m_value;
}
// Use like:
Attribute<int> i = 20;
while(i)
{
if((i & 0xF) == 0)
{
i >>= 2;
}
i--;
} etc...
La question est la suivante : je suis sûr qu'il y a un tas de nuances qui doivent être traitées et que des opérateurs de modèles spécialisés doivent être écrits ; y a-t-il un endroit où cela a déjà été fait pour que je puisse simplement l'utiliser à la place ?
Boost est trop grand et trop compliqué pour être intégré dans mon projet mais je peux le consulter pour savoir s'il existe une classe de ce type - quel est son nom s'il y en a une ?