Załóżmy zdefiniować niejawny funkcję konwersji do siebie:Czy kiedykolwiek zostanie wywołana funkcja niejawnej konwersji?
#include <iostream>
class Foo {
public:
operator Foo() {
std::cout << "wha??\n";
return Foo();
}
};
void f(Foo f) {}
int main() {
Foo foo;
f(foo);
}
Dlaczego miałbym to określić? Cóż, nigdy nie napisałbym tego bezpośrednio, ale może się to zdarzyć poprzez instancję szablonu w klasie szablonu, którą piszę. Jeśli tak się stanie, mam nadzieję, że zdefiniowanie funkcji konwersji jest faktycznie operacją "no-op" i nie można jej wywołać.
Powyższy program niczego nie drukuje (co jest świetne). Czy jest jakaś okoliczność, w której ta funkcja konwersji zostanie wywołana?
Ups! To był literówka. Naprawiony. –