2016-08-29 3 views
16

Meine Frage ist in Bezug auf C++ 17: http://en.cppreference.com/w/cpp/string/basic_string_view/basic_string_viewKeine implizite Konvertierung von std :: string std :: string_view in C++ 17 (war in std :: Versuch :: basic_string_view)

Was ist das Einschränkung der impliziten Konvertierung von std :: basic_string nach std :: basic_string_view, dass es nicht in der Schnittstelle der letzteren enthalten war?

Ich glaube, es würde diese Klasse erheblich verbessern. Vor allem die Familie der Vergleichsoperatoren, die std :: string weder als lhs noch als rs akzeptieren.

Es ist eine solche Umwandlung in Bibliothek Grundlagen TS Spezifikation: http://en.cppreference.com/w/cpp/experimental/basic_string_view/basic_string_view

Diese Frage ist, warum es entfernt wurde. Oder eher nicht angenommen.

+0

C++ 17 Umwandlung geht in die entgegengesetzte Richtung, von String_vew nach String. – Cubbi

+0

@Cubbi Zum einen ist diese Konvertierung * explizit *. Für die zweite wäre die Konvertierung in 'std :: string' eine ziemlich teure Methode,' std :: string_view' mit 'std :: string' zu vergleichen. – GreenScape

+8

Es wurde beschlossen, dass dies die Verantwortung von "basic_string" sein sollte. http://en.cppreference.com/w/cpp/string/basic_string/operator_basic_string_view –

Antwort

15

basic_string_view wird als untergeordnete Klasse betrachtet. Es sind die Anbieter von String-Containern, die für die Bereitstellung impliziter Konvertierungen zu string_view verantwortlich sind. Wenn Sie Ihren eigenen Zeichenkettentyp haben, dann würden Sie ihm möglicherweise eine explicitoperator string_view() Überladung geben, um eine implizite Konvertierung durchzuführen.

Als solche würde it was decided (PDF), dass basic_string die Umwandlung zu basic_string_view bereitstellen würde. Die ursprüngliche Library Fundamentals-Version setzt die implizite Konvertierung auf basic_string_view, da ein TS normalerweise eine Erweiterung ist. Es kann sich nicht auf einen vorhandenen Typ auswirken, ohne diesen Typ wirksam zu verzweigen.

Verwandte Themen