我有一个 Visual Studio 2008 c++03 项目,我遇到过这样的事情:
//foo.hpp
namespace Foo {
template< typename T >
inline void foo( T t )
{
// do stuff...
};
}; // namespace foo
// foo.cpp
#include "foo.hpp"
namepsace Foo {
template void foo< int >();
}; // namespace Foo
//main.cpp
#include "foo.hpp"
int main(void)
{
int a = 5;
Foo::foo(a);
return 0;
}
这确实会创建一个我认为包含的 foo.obj 文件Foo::foo< int >()
,但它似乎不会影响 main.obj 的大小。
这种技术是否可以减少模板代码的编译时间?或者它实际上增加了编译时间,因为Foo::foo< int >()
现在必须编译两次?
谢谢