Ich werde das aus einem anderen Blickwinkel angreifen. Und auf ein mögliches Designproblem eingehen. Sie haben nicht angegeben, was in ...
kommt, aber unter der Annahme, dass get
einen Vektor auffüllt und dann zurückgibt, besteht die Lösung meines Erachtens darin, den Code zu heben, der außerhalb von beide liegt Funktionen.
Eine Quelle der Wahrheit für die populierende Logik. Und während die beiden ursprünglichen Funktionen identisch sind, ist es vernachlässigbar. Außerdem wird es bei einer vernünftigen Implementierung keine überflüssigen Kopien machen, weil RVO erstaunlich ist.
Nein.
Obwohl ein T*
möglicherweise trivialerweise in ein const T*
konvertiert wird, ist ein Container von T*
nicht mit einem Container von const T*
"verwandt", so dass es einfach keine Funktionalität gibt, um das zu tun, was Sie fragen.
Beachten Sie auch, dass diese Funktionalität hypothetisch int**
einem const int**
zuweisen kann, was nicht erlaubt ist (es gibt keinen speziellen Fall, wenn der Programmierer diese Zuweisung als Teil einer Swap-Operation durchführen wollte, z soweit ich weiß).
Außerdem würde ein reinterpret_cast
nur diese Fakten hacken und Ihrem Programm undefiniertes Verhalten geben.
Sie haben drei Möglichkeiten: