Kann mir jemand helfen zu verstehen, ist das richtige Verhalten oder nicht.Mehrdeutiger Fehler mit char * und char [N]
Betrachten Sie dieses Beispiel:
#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;
}
mit gcc 4.7.3 es wie erwartet nur gut und gibt '0' kompiliert.
Aber mit Visual Studio Compiler meldet es eine ambiguous error (C2593)
.
Wer hat Recht in dieser Situation und was sagt standard
darüber?
Vielen Dank.
Es ist mehrdeutig, denke ich. – Shoe