constexpr とインライン関数は 1 つの定義規則に従うことを読みましたが、それらの定義は同一でなければなりません。だから私はそれを試します:
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 に従うことができるということは、正確には何を意味するのでしょうか?