I mają następujące oznaczenia:Pośrednie konwersji i operator przeciążenia
struct helper {
template<typename T> helper(T const&);
};
helper operator*(helper const&);
struct A {};
int main() {
// (1)
A a;
sizeof(*a);
// (2)
int i;
sizeof(*i);
}
przypadku (1) kompiluje i zrozumieć, że jest on za pomocą niejawnego konwersji do rodzaju helper
i przeciążenia danego operatora.
W przypadku (2), ale pojawia się błąd kompilatora:
invalid type argument of unary '*' (have 'int')
Dlaczego niejawna konwersja używany typu A
ale nie dla int
?