Digite emulando uma referência C ++ melhor que std :: reference_wrapper

Estou projetando uma classe que se comporta como uma referência em C ++, mas faz algumas coisas instrumentais extras (contabilidade).

Inicialmente pensei questd::reference_wrapper<T> seria um bom modelo. Mas depois de um tempo eu percebi questd::reference_wrapper<T> não se comporta, mesmo em princípio, como uma referência C ++ porque a atribuição reinicia o ponteiro interno.

    double a = 5.;
    double b = 3.;
    double& ref = a;
    ref = b;
    assert(&ref != &b); // ref is not bound to b
    std::reference_wrapper<double> refwpr = a;
    refwpr = b;
    assert(&refwpr.get() == &b); // ref wrapper was rebound to b

É claro que posso mudar esse comportamento para minha própria classe (para não religar), mas acho que talvez uma classe que emule uma referência já esteja lá fora. Por exemplo, algo como "std::real_reference<T>"

Existe uma classe (padrão ou não) que emula referências mais de perto?

Eu acho que também pode ser útil, por exemplo, em muitos lugares que se vêstd::vector<std::reference_wrapper<T>> apresentado como uma alternativa parastd::vector<T&> mas isso é enganoso porque a semântica é diferente, mas poderia ser alcançada com algumas modificaçõesstd::vector<std::real_reference<T>>.

Agora acho que, se um invólucro de referência "perfeito" fosse possível, as referências poderiam ser apenasimplementado com ponteiros e não precisaríamosT& mas simplesmente tem um recurso de bibliotecareference<T> que funciona exatamente comoT& em todos os aspectos ....

... o que, por sua vez, significa que o idioma pode permitir que você "sobrecarregue" o& atributo sobre tipos para produzir um tipo personalizado em vez de uma referência de idioma. Por exemplousing mytype& = custom_reference_emulator_of_mytype.

questionAnswers(1)

yourAnswerToTheQuestion