C++ C++;:并行化模板实例化

C++ C++;:并行化模板实例化,c++,c++17,template-instantiation,C++,C++17,Template Instantiation,我们有一个具有多个模板参数的大类。为了减少编译时间,我们已经在使用。虽然这减少了包含头的每个人的编译时间,但编译cpp文件仍然非常慢 有没有办法告诉编译器(这里是gcc和clang)并行实例化多个模板 我们希望具有与放置模板类Foo相同的效果和模板类Foo从链接的问题转换为两个不同的cpp文件 由于存在多个Foo和多个不同的实例化,因此必须为每个实例维护一个文件并不是最佳选择。此外,如上所示的显式实例化是由宏生成的。Yes将显式实例化放在单独的编译单元中。^并使用并行编译我在问题的最后一段添加了

我们有一个具有多个模板参数的大类。为了减少编译时间,我们已经在使用。虽然这减少了包含头的每个人的编译时间,但编译cpp文件仍然非常慢

有没有办法告诉编译器(这里是gcc和clang)并行实例化多个模板

我们希望具有与放置
模板类Foo相同的效果
模板类Foo从链接的问题转换为两个不同的cpp文件


由于存在多个
Foo
和多个不同的实例化,因此必须为每个实例维护一个文件并不是最佳选择。此外,如上所示的显式实例化是由宏生成的。

Yes将显式实例化放在单独的编译单元中。^并使用并行编译我在问题的最后一段添加了这一点。由于有许多
Foo
s和
T
s(由元编程魔术生成),手工生成文件真的很难看。这个文件经常更改吗?否则,使用ccache或一些缓存构建工件的构建系统可以加速后续编译。即使这样,我们也无法避免对该文件进行更改。根据我的经验,必须避免使用那个文件是个坏主意,因为它会导致人们在不必接触那个文件的地方使用丑陋的黑客。