operator [] Überladung
-
OK, an den Rückgabetypen hab' ich nicht gedacht.
In C++11 sollte es kein Problem sein, weil man
-> auto&
verwenden kann.auto operator[](size_t i) -> auto& { return val[i]; }
In C++03 müsste man die Funktion auf z.B. Container die
T::value_type
definieren einschränken:typename T::value_type operator[](size_t i) { return val[i]; }
Wobei der aktuell von ideone für C++14 verwendete Compiler hier der Meinung ist die Funktion sofort instanzieren zu müssen, was dann natürlich für Typen wie
int
beiT::value_type
kracht.prog.cpp: In instantiation of 'struct S<int>': prog.cpp:25:15: required from here prog.cpp:15:29: error: 'int' is not a class, struct, or union type typename T::value_type operator[](size_t i)
Sollte das nicht explizit über SFINAE erlaubt sein?
So langeoperator []
nirgends verwendet wird, besteht ja keine Notwendigkeit dassT::value_type
was sinnvolles ergibt oder auch nur existiert.Oder hab' ich da was falsch verstanden/falsch in Erinnerung?
EDIT: Da mein Beitrag hier ne neue Seite angefangen hat...
Furble Wurble hat die Erklärung gefunden - die Aufgabe mitoperator []
war schlicht ein Fehler: https://www.c-plusplus.net/forum/p2443845#2443845
-
Hallo Leutz,
Danke Furble Wurble dann kann ich die Aufgabe ja getrost auslassen.
Ich wusste gar nicht das es so etwas wie eine Korrektur für das Buch gibt.
Leider kann ich auch kein Englisch, so das ich mich auf der Seite belesen könnte aber ich werde mir die Seite für spätere Eventualitäten abspeichern.Danke auch allen anderen Helferlein.
Ich werd dann mal weiter machen.
Lust verlieren ist nicht eher mach ich ne Pause und lass sacken.
Ich hab hier 4 Bücher zu liegen aber manchmal fehlt einen dann doch die Möglichkeit mit einen darüber zu reden wenn man nicht weiter kommt.Bis auf ein nächstes mal nun hol ich erst mal nen Eisbecher
Guido
-
utass schrieb:
aber manchmal fehlt einen dann doch die Möglichkeit mit einen darüber zu reden wenn man nicht weiter kommt.
Rettet dem Dativ!