【发布时间】:2014-06-10 23:24:33
【问题描述】:
我想知道对于必须声明 constexpr 函数和方法的位置是否有任何限制,例如内联函数和方法。
我知道内联函数或方法必须写在头文件中,以使编译器可以在调用它们的位置访问它们的定义。如果 constexpr 有类似的东西,那将是有道理的,但我无法在这一点上找到任何东西......
所以基本上我的问题是:
我可以在头文件中编写 constexpr 函数的定义,而不必冒重复符号的风险吗?
可以将 constexpr 函数或方法的声明和定义分开吗?
【问题讨论】:
-
[dcl.constexpr]/2 "
constexpr函数和constexpr构造函数隐含为inline" 这意味着您需要在每个翻译单元中定义(源文件)使用该函数的位置,并且您可以在不同的源文件中拥有多个定义,前提是它们是等效的(请参阅 ODR)。 -
我一头雾水,你是在问能不能在header中声明一个函数不是constexpr,然后在定义的时候,声明为constexpr?