Eine kurze Frage: warum für wörtliche definiert C nicht ++ 11 bietet eine "benutzer" (wirklich, Standardbibliothek), die beide ein std::string
, wieWarum kein standarddefiniertes Literalsuffix für std :: string?
auto str = "hello world"s; // str is a std::string
wie C++, Objective-C zu schaffen unterstützt C-Style-Strings und ein benutzerfreundlicherer Bibliothekstyp NSString
; Im Gegensatz zu C++ wird jedoch niemand zwischen den beiden verwechselt, da es einfach ist, NSString
zu erstellen, indem ein Zeichenfolgenliteral mit @
vorangestellt wird. In der Tat ist es selten, Objective-C-Code zu sehen, wo ein Literal nicht das Präfix @
hat. Jeder weiß genau, dass es so ist, benutzt NSString
und macht damit weiter.
C++ 11 benutzerdefinierte Literale würde dies erlauben, und in der Tat verwendet die UDL-Abschnitt auf Stroustrup C++ 11 FAQ genau dieses Beispiel. Darüber hinaus sind UDLs ohne führenden Unterstrich reserviert, so dass es kein Problem wäre, eine einfache s
wie oben zuzulassen - es gibt keine Möglichkeit, dass sie mit etwas anderem kollidiert.
Vielleicht vermisse ich etwas, aber es scheint, dass dies eine sehr wertvolle und risikolose Ergänzung zur Sprache wäre, weiß also jemand, warum C++ 11 es nicht anbietet? Wird es wahrscheinlich in C++ 14 angezeigt?
Nun, wir gehen, eine perfekte Antwort in ein paar Sekunden, +1 (oder mehr, wenn ich könnte). Seltsam, dass es nicht Teil des ursprünglichen UDL-Vorschlags war, aber da gehen wir hin. Ich freue mich darauf, endlich (hoffentlich) den Fluch von 'char *' in C++ 14 zu verlieren! –
würde ich gerne verwenden, vor allem in Kombination mit "auto" – Excelcius
@Excelcius: Wichtiger als mit 'auto' (mindestens IMO) ist einfach in Ausdrücke, wie das Hinzufügen von Strings zusammen:' "A" s + "B" s zum Beispiel. –