12

Boost はstring_view、C++17 の一部となるの 2 つの異なる実装を提供します。

  • boost::string_refutility/string_ref.hpp
  • boost::string_viewcore/string_view.hpp

これらの間に大きな違いはありますか?今後はどちらを優先すべきですか?

注: Boost 1.61 で気づいたのですが、boost::log は string_view を優先して string_ref を非推奨にしました。指標なのではないでしょうか?( http://www.boost.org/users/history/version_1_61_0.html )

4

2 に答える 2

13

おかしなことに、私は現在、マーシャル・クロウ (委員会の string_view などの背後にいる勢力) と一緒に ACCU カンファレンスに出席しており、文字列ビューと比較した彼の見解について呼び出される前に、今日の早朝にバーで文字通り彼に尋ねようとしていました。gsl::span<T>非常によく似たBjarne のガイドライン サポート ライブラリ (GSL) ( gsl-liteは 03 と互換性があるため、私の個人的なお気に入りの GSL の実装ですが、他にもたくさんあります)。標準化のためにひとつの実装に統一し、そのgsl::span<T>方向性は今後だと聞いていたのですが、間違っていたら馬の口から報告します。今のところ、方向性は現在の未来であり、Boost は、本質的には string_viewgsl::span<T>であっても、すぐに同様のものになるように更新されると仮定します。using string_view = gsl::span<char>.

編集:階下でマーシャルと話したところです。彼は、Boost の実装によると、string_view は間違いなく C++ 17 にあると語っています。array_view はそうではありません。

GSL string_span は、C++ 17 に導入されるとは予想されていない別個のエンティティであり、さまざまなユース ケースを解決するために実装を統合する現在の計画もありません。借用した文字配列の潜在的に変更可能なビューであり、新しい文字列を構築するためのソースとして使用される可能性があるため、string_span は最終的に将来の C++ 標準で string_view の一般化になる可能性があります。

于 2016-04-19T21:51:27.673 に答える