Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
az ilyen típusú objektumok több módon is meghívhatók ezekkel az argumentumokkal
Megjegyzések
A fordító nem egyértelmű függvényhívást észlelt helyettesítők bevonásával.
Példák
Az alábbi példa c3066-ot hoz létre:
// 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
}
Másolási lista inicializálása
A Visual Studio 2015-ben a fordító hibásan kezelte a copy-list-inicializálást ugyanúgy, mint a hagyományos másolási inicializálást; csak a konvertáló konstruktorokat vette figyelembe a túlterhelés feloldásánál. A következő példában a Visual Studio 2015 a MyInt(23) lehetőséget választja, de a Visual Studio 2017 helyesen emeli ki a hibát.
// From https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1228
struct MyList {
explicit MyStore(int initialCapacity);
};
struct MyInt {
MyInt(int i);
};
struct Printer {
void operator()(MyStore const& s);
void operator()(MyInt const& i);
};
void f() {
Printer p;
p({ 23 }); // C3066: there are multiple ways that an object of this type can be called with these arguments
}