有人可以幫助我理解這種正確的行爲與否。char *和char [N]的模糊錯誤
考慮這個例子:
#include <iostream>
using namespace std;
template <typename T>
struct test {
};
template <typename T>
bool operator==(const test<T>& obj, const T* arr) {
return true;
}
template <typename T, size_t TN>
bool operator==(const test<T>& obj, const T (&arr)[TN]) {
return false;
}
int main() {
cout << (test<char>() == "string") <<endl;
return 0;
}
使用GCC 4.7.3編譯它只是罰款和預期產出 '0'。
但使用Visual Studio編譯器報告ambiguous error (C2593)
。
誰在這種情況下是正確的,standard
對此有何評論?
謝謝。
我覺得這是模棱兩可的。 – Shoe