boost::operators
define automáticamente operadores como +
basado en implementaciones manuales como +=
que es muy útil. Para generar los operadores de T
, uno hereda de boost::operators<T>
como se muestra en el ejemplo impulso:¿Cómo funcionan los operadores de impulso?
class MyInt : boost::operators<MyInt>
estoy familiarizado con el patrón CRTP, pero no puedo ver cómo se trabaja aquí. Específicamente, realmente no estoy heredando ninguna instalación ya que los operadores no son miembros. boost::operators
parece estar completamente vacío, pero no soy muy bueno para leer el código fuente de impulso.
¿Alguien podría explicar cómo funciona esto en detalle? ¿Es este mecanismo bien conocido y ampliamente utilizado?
Lo que es realmente divertido es que se hereda de forma privada de la clase y sin embargo funciona. Realmente es un truco divertido :) –
Tiene un nombre: el truco [Barton-Nackman] (http://en.wikipedia.org/wiki/Barton-Nackman_trick). –