Puede alguien dar una pista de cómo lo hace expresiones proceso compilador comoC++ análisis plantilla de la orden de código/CRTP
class DerivedA: public ParentTemplateClass<DerivedA>{
}
Para mee que parece:
el padre de este niño es un "hijo" de este niño
Quiero decir que no es obvio para mí cómo se puede completar el "análisis sintáctico" de la clase DerivedA SIN conocer exactamente la "descripción" de la clase principal. Parece que no puede. Entonces la clase de padres debe procesarse antes que los niños, pero en tal situación, los padres dependen de los niños ... y estoy atrapado allí.
Sí, hay algunos artículos en la web que describen el uso de tal cosa, p. un artículo sobre el patrón de plantilla Curiosamente recurrente ( http://en.wikibooks.org/wiki/More_C++_Idioms/Curiously_Recurring_Template_Pattern), pero eso no es un tipo de estándar o algo cercano. Debe haber una descripción clara del comportamiento, como ordenar las operaciones, ¿no es así?
RESPUESTA: Thnx to everyone. Sí, la analogía del forward me parece legítima para dejar de dañar mi cerebro. Las plantillas siguen siendo un estado del arte para mí debido a su naturaleza sublengua oculta y no puedo solo g ++ -E :)
Piénselo en este momento como si fuera una declaración directa. – PlasmaHH
Pienso en esto como "El padre del chico se define en términos de este hijo específico."No soy fanático de CRTP, sospecho que se usa en exceso, pero la interpretación del código CRTP específico es relativamente sencilla. Las plantillas siempre se expanden por completo antes de que se puedan crear instancias de objetos tipeados. – aSteve
" Las plantillas siempre se expanden completamente antes los objetos mecanografiados se pueden instanciar "sí, parece legítimo. Para mí, algún tipo de efecto de desenfoque se debe a que la temaplate se instancia durante la compilación y no en el preprocesamiento. – sohel