VS 2010未检测到模板内代码的任何更改

时间:2014-05-27 07:53:41

标签: c++ visual-studio-2010

我们假设我已经在头文件

中编写了下一个代码
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检测我的代码中的更改?任何人都可以建议为什么会出现这种情况以及如何克服它?

1 个答案:

答案 0 :(得分:5)

如果未实例化该模板的适当实例,则不会编译模板类中的代码。

标准规定了这一点,各种元编程技术都会利用它。