Sobrecarregando operador unário &

Vamos considerar uma classe com operador unário sobrecarregado & (Endereço de). Deixe serclass A

template <class C>
class A
{
public:
    C * operator &()
    {
        return &data;
    }
    //...
private:
    C data;
}

gora eu quero passar para alguma função um ponteiro do tipoA para preencher seudata. Vamos chamá-lof

void f(A * auto_containter)
{
    //...
}

Mas é claro por que o código abaixo não funcionaria (nem mesmo seria compilado). Isso ocorre porque o operador sobrecarregado é chamado.

A a;
f(&a);

A pergunta é a seguinte:

Existe alguma sintaxe para passar o endereço dea paraf? Se não, então para mim é muito estranho porque é permitido sobrecarregaroperator &, porque torna o código mais complicado e difícil de entender. Ou existem outros motivos?

questionAnswers(6)

yourAnswerToTheQuestion