boost::operators
définit automatiquement les opérateurs comme +
basé sur des implémentations manuelles comme +=
ce qui est très utile. Pour générer ces opérateurs pour T
, on hérite de boost::operators<T>
comme le montre l'exemple de boost:Comment fonctionnent les opérateurs boost?
class MyInt : boost::operators<MyInt>
Je connais le modèle CRTP, mais je ne vois pas comment cela fonctionne ici. En particulier, je n'hérite pas vraiment des installations puisque les opérateurs ne sont pas membres. boost::operators
semble être complètement vide, mais je ne suis pas très bon à lire le code source boost.
Quelqu'un pourrait-il expliquer comment cela fonctionne en détail? Ce mécanisme est-il bien connu et largement utilisé?
Ce qui est vraiment amusant est que vous héritez privé de la classe et pourtant il fonctionne. C'est un truc marrant vraiment :) –
Il a un nom: le [truc de Barton-Nackman] (http://en.wikipedia.org/wiki/Barton-Nackman_trick). –