У меня есть 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>()
теперь должен быть скомпилирован дважды?
Thanks
Кажется бессмысленным, поскольку функция 'inline' –