Let's consider a class with overloaded unary operator & (Address-of). Let it be class A
template <class C>
class A
{
public:
C * operator &()
{
return &data;
}
//...
private:
C data;
}
Now I want to pass to some function a pointer of type A
to fill its data
. Let us call it f
void f(A * auto_containter)
{
//...
}
But it is clear why the code bellow wouldn't work (even wouldn't compile). It is because the overloaded operator is called.
A a;
f(&a);
The question is following:
Is there any syntax to pass address of a
to f
? If no, then for me it is very strange why it is allowed to overload unary operator &
, because it makes code more buggy and difficult to understand. Or there are some other reasons?