【发布时间】:2012-06-14 14:10:52
【问题描述】:
我有一个 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::foo< int >() 的 foo.obj 文件,但它似乎不会影响 main.obj 的大小。
这种技术是否可以减少模板代码的编译时间?还是实际上增加了编译时间,因为Foo::foo< int >() 现在必须编译两次?
谢谢
【问题讨论】:
-
似乎没有意义,因为函数是
inline
标签: c++ templates compile-time