【发布时间】:2015-05-30 23:52:29
【问题描述】:
我刚刚读到 constexpr 和 inline 函数遵循单一定义规则,但它们的定义必须相同。所以我试试看:
inline void foo() {
return;
}
inline void foo() {
return;
}
int main() {
foo();
};
错误:重新定义 'void foo()',
和
constexpr int foo() {
return 1;
}
constexpr int foo() {
return 1;
}
int main() {
constexpr x = foo();
};
错误:'constexpr int foo()'的重新定义
那么究竟是什么意思,constexpr 和 inline 函数可以服从 ODR 呢?
【问题讨论】:
-
这意味着您可以在不同的翻译单元中对它们进行多个定义。
标签: c++ c++11 inline constexpr one-definition-rule