c++ - 实现与声明分离的库能否从 constexpr 中受益?

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

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

最佳答案

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

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

关于c++ - 实现与声明分离的库能否从 constexpr 中受益?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47476578/

相关文章:

c++ - 将重载的成员函数传递给函数模板

c++ - 在聚合初始化期间从后面的成员表达式中引用早期成员是否定义了行为?

c++ - 为 STL 排序算法定义 < - 运算符重载、仿函数或独立函数?

c++ - 如何将osgEarth的ViewerWidget放入选项卡式MdiArea中?

C++:带有可变参数的 Hacky 参数模式

gcc - 在 GCC 中链接包含循环引用的库

ios - 如何在 iOS 中制作供个人重用的框架(库?)?

c++ - 静态库中的符号可见性和操作

c++ - 当通知简历时,condition_variable::wait_for是否返回true

c++ - 应该如何在接收 shared_ptr 的类构造函数中初始化 weak_ptr?