在循环初始化中使用带有静态的constexpr?

时间:2019-01-02 09:51:13

标签: c++ c++11 c++14 c++17

我试图了解如何从不同来源使用constexpr。但是我有一个问题,我想将下面的程序转换为使用constexpr而不是const。该程序是我的主程序的模板。

df_hist= pd.read_feather('tmp/historical-raw') 

在最后一行中,我想使用constexpr来确保此obj变量在编译时出现,从而减小代码大小并进行优化,但是根据标准,不能使用constexpr。并且它给出有关多个声明的错误。如果我在类A中更改了const,则必须进行初始化。我想在constexpr函数中使用obj变量,因为obj在编译时不存在,所以发生错误。我问我该如何解决问题,因为如果无法解决问题,那么代码的优化可能会受到15%的影响,这确实是巨大的。

1 个答案:

答案 0 :(得分:1)

constexpr将常量应用于所定义的对象时,您可以在最后一行或最后两行中的constexpr之前使用const(如果这是您真正想要的)这样。

constexpr const B& A::obj=B(10);
constexpr const B& B::obj=B(20);

这有效。参见编译的演示here