Ich habe mich gefragt, ob es einen Unterschied gibt zwischen dem, was von ptrToArray
und ptrToLiteral
im folgenden Beispiel gezeigt wird:
constExprArray
und die beiden "hello"
Literale alle Kompilierzeitkonstante lvalues korrekt sind? Ein String-Literal und ein constexpr-Array von char sind fast identisch. Ein Zeiger auf jedes ist ein Adreßkonstantenausdruck. Eine lvalue-to-rvalue-Konvertierung ist für ihre Elemente in einem konstanten Ausdruck zulässig. Beide haben eine statische Speicherdauer. Der einzige Unterschied, den ich kenne, ist, dass ein String-Literal ein Array initialisieren kann, während ein conexpr-Array nicht:
%Vor% Um dies zu umgehen, können Sie das Array in eine Klasse von Literaltypen umwandeln. Wir sind derzeit dabei, einen solchen Wrapper zu standardisieren, der std::string_literal
oder ähnlich heißen wird, aber jetzt müssen Sie das von Hand machen.
Tags und Links c++ c++11 constexpr string-literals