Como parte de un equipo de desarrolladores, quería asegurarme de que un conjunto de funciones (y operadores) se implementan en los iteradores personalizados que publicamos. Usar tipos de iterador STL como tipos básicos ayuda, sin embargo, debido a algunas razones (fuera de mi control), decidimos no aplicar la compatibilidad STL. Los iteradores son consumidos por el mismo equipo y por personas de toda la compañía.static_assert para garantizar el contrato de diseño
Quería diseñar una clase de plantilla que consuma el tipo de iterador y las pruebas contra el contrato de diseño.
Por ejemplo, esperaría que un iterador implementara un operador ++, operator-- y también declare los typedefs necesarios.
1> ¿Es posible implementar una clase de plantilla que haga cumplir el contrato de diseño? probablemente usando static_assert?
2> En caso afirmativo, ¿es este un buen diseño?
referencia: custom iterator
http: //www.boost.org/doc/libs/1_48_0/libs/type_traits/doc/html/boost_typetraits/category/value_traits/operators.html quizás? – BoBTFish
La [impresora bonita] (http://stackoverflow.com/q/4850473/596781) tiene una clase de rasgo C++ 11 para verificar si un tipo tiene tipos de iterador y funciones 'begin' /' end' que devuelven ese iterador tipo. –
@Kerrek Gracias por el ejemplo. Ahorré varias horas hombre. :) – Ram