具有与声明分离的实现的库是否可以从constexpr中受益?

时间:2017-11-24 15:51:51

标签: c++ c++14 static-libraries constexpr

最近,我想编写一个静态库,它具有类模板和类模板特定实例化的几个非模板操作符重载函数。我决定在a.h中定义类模板并在a.cc中定义函数。但突然有一个问题,如果我用constexpr声明和定义函数,编译器是否能够在编译时(链接时)计算结果?

1 个答案:

答案 0 :(得分:1)

不,就像使用模板函数体一样,您不能将constexpr函数的定义放在与使用它们的代码不同的翻译单元中。编译器只能看到当前翻译单元中的内容(aka:.cpp文件及其#includes的所有内容)。因此,如果函数体不存在,那么它就无法在编译时执行代码。

现在,您可以将它们放入单独的文件中。但使用它的代码仍然必须#include两个文件。