Ich lief in einiges Missverständnis: zumindest in libC++ Implementierung std :: Versuch :: string_view hat die folgende kurze Einführung:string_view Verhalten beim Passieren temporäre std :: string
template <class _CharT, class _Traits....>
class basic_string_view {
public:
typedef _CharT value_type;
...
template <class _Allocator>
basic_string_view(const basic_string<_CharT, _Traits, _Allocator>& str):
__data(str.data()), __size(str.size())
{
}
private:
const value_type* __data;
size_type __size;
};
Ist diese Umsetzung bedeutet, dass Wenn wir einen rvalue-Ausdruck an diesen Konstruktor übergeben, erhalten wir bei der Verwendung von __data nach der Konstruktion ein undefiniertes Verhalten.
Ja. Ein 'string_view' ist nur eine verklärte Referenz. – Rapptz
[Siehe auch] (http://stackoverflow.com/q/20803826/596781). –