我们假设我已经在头文件
中编写了下一个代码template<typename MyType>
inline void function()
{
/*some code here*/;
}
当我在Visual Studio 2010 SP1中按下构建解决方案时,它会构建代码并获得下一个
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
似乎一切都很好,但是如果我在模板中添加任何代码(即使它是一个有错误的代码),VS也不会检测到更改并告诉构建成功。 例如:
template<typename MyType>
inline void function()
{
this is a plane text so, compiler should give an error //line with error
/*some code here*/;
}
构建结果:
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
如果我在模板外添加任何错误代码,VS会告诉我构建FAILED,之后它实际上会找到模板外部和内部的所有错误。强制VS检测模板内部任何更改的另一种方法是重建整个项目,但在我的情况下需要花费太多时间,所以我想找到一些其他方法来强制VS检测我的代码中的更改?任何人都可以建议为什么会出现这种情况以及如何克服它?
答案 0 :(得分:5)
如果未实例化该模板的适当实例,则不会编译模板类中的代码。
标准规定了这一点,各种元编程技术都会利用它。