预编译头和STL库

时间:2017-10-24 08:44:54

标签: templates gcc stl precompiled-headers

我正在为C ++项目使用预编译头文件(使用gcc 5.3.1)。

我在预编译的头文件中包含了很多标准库头文件。

...
#include <vector>
#include <map>
#include <set>
#include <unordered_map>
...

但由于这些主要是模板,我是否需要为预编译头中使用的每种类型指定它们?

例如:

void touchStdVectorFloat(const std::vector<float> & vec) {}
void touchStdVectorInt(const std::vector<int> & vec) {}
...

通过这种方式,使用的模板在预编译的标头生成时间

是已知的

它有用还是没用?

1 个答案:

答案 0 :(得分:1)

预编译头只是常规头包含的替代品。它是否包含模板无关紧要,编译模型不会改变。实例化模板的任何代码仍然需要在范围内定义模板。