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ファイルが作成されますが、main.objFoo::foo< int >()
のサイズには影響しないようです。
この手法は、テンプレートコードのコンパイル時間を短縮するために機能しますか?それとも、2回コンパイルする必要があるため、実際にはコンパイル時間が長くFoo::foo< int >()
なりますか?
ありがとう