导航

关于ODR和Template

Posted on 2006-12-14 16:11  InterMa  阅读(1056)  评论(0编辑  收藏  举报
关于ODR(one-definition rule)和Template再扯几句:
Template要2次编译,因此在每个TU中都要看实现代码,分离编译模型就成空谈了,为了在每个TU中让compiler看实现代码,就要违反ODR了,那就折衷一下,于是要求实现要一致,然后compiler暗中帮你保证只搞出一份出来,一个TU中好说,但是偏偏在多个TU中,compiler和linker却都不检查实现的一致性。。。(似乎采用就近原则)
非Template就没有这些烦恼了,造成你的大脑得随时提醒自己在看的是Template,原谅她们吧,她们太坏了!