我正在为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) {}
...
通过这种方式,使用的模板在预编译的标头生成时间
是已知的它有用还是没用?
答案 0 :(得分:1)
预编译头只是常规头包含的替代品。它是否包含模板无关紧要,编译模型不会改变。实例化模板的任何代码仍然需要在范围内定义模板。