Compilerfehler C3066
Es gibt mehrere Möglichkeiten, ein Objekt dieses Typs mit diesen Argumenten aufzurufen
Der Compiler hat einen mehrdeutigen Funktionsaufruf gefunden, der Surrogate beinhaltet.
Im folgenden Beispiel wird C3066 generiert:
// C3066.cpp
template <class T, class U> void func(T*, U*){}
typedef void (*PF)(const int*, const char*);
typedef void (*PF1)(const int*, volatile char*);
struct A {
operator PF() const {
return func;
}
operator PF1() {
return func;
}
operator PF1() const {
return func;
}
};
int main() {
A a;
int i;
char c;
a(&i, &c); // C3066
a(&i, (const char *) &c); // OK
}