"Anachronismus verwendet" <- WTF?
-
Ich habe mir eine Klasse String gebastelt, die nur ein Attribut hat: einen std::string. Diese Klasse hat folgende Methode
// Das ist der komplette Quelltext std::string& const ToLower() { return(m_buffer); }
Nun bekomme ich mit Verweis auf die Deklarationszeile folgende Meldung:
warning C4227: Anachronismus verwendet: Qualifizierer auf Verweise werden ignoriert
Was bedeutet das genau? Ohne const gibt es keine Meldung. Sowas hatte ich noch nie
-
Ne Referenz ist immer const.
-
...wollte ich auch grad schreiben
Du meinst vermutlich "std::string const &" und nicht "std::string & const".. Der Unterschied (visuell) ist zwar klein aber durchaus bedeutsam
-
Was bedeutet das genau?
Das wäre wahrscheinlich klarer, wenn sich der Compiler weniger geschwollen ausdrücken würde. Anachronismus bedeuetet wörtlich "gegen die Zeit". In diesem Fall ist aber wohl eher gemeint, dass ein Sprachfeature verwendet wurde welches heute nicht mehr gültig ist, aber aus Gründen der Rückwärtskompatibilität dennoch beibehalten wurde. Anachronismus wird hier also im Sinne von "nicht mehr zeitgemäß" verwendet.
Dein Compiler aber noch ein größeres Problem als seine Ausdrucksweise. Die Anwendung des const-Qualifizieres auf eine Referenz ist nicht nur nicht mehr zeitgemäß sondern schlicht nicht erlaubt. Das sollte also keine Warnung sondern ein Fehler sein.