下未能在VC++ 8.0編譯器編譯錯誤(我還沒有嘗試過的最新的Visual Studio編譯呢。)MSVC模板參數推導失敗:錯誤?
錯誤C2440:「迴歸」:不能轉換從「常量字符*」到 '常量 CHAR(&)[6]'
template <typename T>
inline T const& compare (T const& a, T const& b)
{
return a < b ? b : a;
}
int main()
{
::compare("string1", "string2");
}
裏面的函數模板,似乎字符串const char (&)[6]
。
據我所知,當應用<
運算符時,數組應該被衰減爲指針。 那麼,這個錯誤可能是因爲可能的錯誤?
gcc [編譯](http://ideone.com/WVU4h)此代碼沒有任何問題,所以這必須是MSVC中的一個錯誤。 – Vlad
無論如何,你不想將C字符串傳遞給這樣的模板(比較它們的地址)。 – UncleBens
這確實看起來像一個錯誤,MSVC說表達式的類型'a Praetorian