考慮以下代碼,它試圖實作 的部分特化class Bar。在第一種情況下,foo成員函式是行內定義的,而在第二種情況下是外聯定義的。行外定義產生了一個我無法弄清楚的編譯錯誤:
error: out-of-line definition of 'foo' from class 'Bar<T>' without definition
template<class T>
struct Bar;
template<class T>
requires std::is_same_v<T, int>
struct Bar<T> {
int foo(T a) {
return a 5;
}
};
template<class T>
requires std::is_same_v<T, double>
struct Bar<T> {
double foo(T a);
};
template<class T>
requires std::is_same_v<T, double>
double Bar<T>::foo(T a) {
return a 5;
};
我正在使用帶有 c 20 編譯選項的 clang-11。我不確定這是我的誤解、功能還是錯誤。任何幫助表示贊賞。
uj5u.com熱心網友回復:
可能是叮當聲錯誤。這是在https://bugs.llvm.org/show_bug.cgi?id=50276 上報告的。無論如何 GCC 很好
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/326452.html
