Return-Typ schrieb:
> Ich tue mich etwas schwer mit dem Begriff "Top Level".
> Top Level von was?
Von der Referenzierung.
> Und warum ist das const in "const T &" kein top-level?
Weil es sich nicht auf die Referenz, sondern auf das referenzierte
Objekt bezieht.
Return-Typ schrieb:
> Wie gesagt, dass Referenzen nicht umgebunden werden können, ist klar.
> Was aber geht, ist auf ein non-const Objekt mittels "Referenz auf const"
> zuzugreifen.
>
> Bei "const T &", warum ist dieses const ein top-level const,
Ist es nicht. Bei T & const wäre es top-level, wenn es denn sowas gäbe.
> und bei "const int &", warum ist dieses kein top-level const?
Genau wie oben: Weil es sich nicht auf die Referenz selbst bezieht,
sondern auf das referenzierte Objekt. Vielleicht wird es bei Zeigern
etwas klarer, wo es mehr Ebenen der "Verzeigerung" geben kann:
1 | int const * const * const * const myptr;
|
Hier gibt es quasi vier Ebenen, die alle const sind, daher viermal
const. Die oberste Ebene, also top-level const, ist das letzte in dieser
Reihe. Bei Referenzen geht das alles nicht. Weder gibt es mehr als zwei
Ebenen, noch gibt es auf oberster Ebene die Möglichkeit, sie const zu
machen.
> Bei "const T &" hätte ich auch die Anweisung "Zugriff mittels Referenz
> auf const" vermutet.
Da hast du richtig vermutet.