【发布时间】:2011-09-10 12:26:45
【问题描述】:
阅读关于 SO 的问题、cmets 和答案,我一直听说 MSVC 没有正确实现两阶段模板查找/实例化。
据我目前了解,MSVC++ 仅对模板类和函数进行基本语法检查,并没有检查模板中使用的名称是否至少已声明或类似的内容。
这是正确的吗?我错过了什么?
【问题讨论】:
-
我没有这方面的参考,但我相信现在已经实现了,可能在 VC 2005 或 2008 中。
-
@Simon :我不这么认为。
-
@ildjarn:我收回我的声明!模板编译得到了显着改进,但特别是两阶段查找显然仍然过于松懈。从定义来看,我认为 broken 可能是一个过于强大的术语。
-
我对 VC2010 的体验给我的印象是编译器在第一阶段查找名称的工作比所需的要少得多。至少我发现了更多的 gcc 错误,VC 跳过了。
-
你可能会发现最近提交给 Visual Studio 的 bug 很有趣:MSVC 需要命名空间,即使它被提升 - connect.microsoft.com/VisualStudio/feedback/details/715626 或许,如果更多人投票,它会尽快修复。
标签: c++ templates visual-c++ instantiation