函數模板考慮以下(人工)示例的變量時:錯誤傳遞聲明爲`的extern炭[]`到在VC
template <typename T>
void f(const T&) {}
extern char test[];
int main() {
f(test);
}
char test[] = "";
GCC和鏘編譯成功,但Visual C++給出以下錯誤:
test.cc(7): error C2664: 'f' : cannot convert parameter 1 from 'char []' to 'const char (&)[1]' [...vcxproj] Reason: cannot convert from 'char []' to 'const char [1]' There is no context in which this conversion is possible
爲什麼VC++會出現此錯誤,而其他編譯器接受代碼以及如何避免此錯誤?
爲了避免錯誤,請停止使用C風格的數組......他們沒有適當的值語義 –