c ++模板代码顺序解析/ CRTP

soh*_*hel 5 c++ templates crtp

有人可以提示一下编译器如何处理表达式,例如

class DerivedA: public ParentTemplateClass<DerivedA>{
}
Run Code Online (Sandbox Code Playgroud)

对于我来说它看起来像:

这个男孩的父亲是这个男孩的"儿子"

我的意思是,对于我来说,如何在不知道父类的确切"描述"的情况下完成DerivedA类的"解析"并不明显.似乎'它不能.所以必须在孩子之前处理父类,但在这种情况下,父母依赖于孩子......我就被困在那里.

是的,网上有一些文章描述了这种事情的用法,例如一篇关于好奇重复模板模式的文章( http://en.wikibooks.org/wiki/More_C++_Idioms/Curiously_Recurring_Template_Pattern),但这不是某种标准或附近的smth.必须有明确的行为描述,例如操作顺序不是吗?

答案:Thnx给大家.是的,向前推断类比对我来说似乎是合法的,可以阻止我的大脑受损.模板仍然是我的艺术状态因为它隐藏的子语言性质,我不能只是g ++ -E :)

Tam*_*lei 6

代码完成后class DerivedA,DerviedA会声明符号.此时它可以用作模板参数.C++编译器对代码进行了多次传递,因此在解析时,编译器将"相信"您的意图是正确的,并且最终将获得该类的定义(当它即将实例化模板时,即您实际上使用那种类型).如果没有,它会在那时抱怨.如果在声明中使用了前向声明的类但在使用前没有提供定义,则会发生类似的情况.