クラスにメンバー変数std::vector<std::string>があり、 と の組み合わせを使用して、メンバー関数から不変ビューとしてそれを返したいとしgsl::array_viewますgsl::cstring_view。残念ながら、以下はコンパイルされません。
class C {
public:
gsl::array_view<const gsl::cstring_view<>> getVectorOfStrings() const
{
return _vectorOfStrings;
}
private:
std::vector<std::string> _vectorOfStrings;
};
cstring_viewこれは、array_viewを作成できるコンテナーがないためです。だから私の質問は: type のメンバーのようなものを明示的に追加せずにそのような構造を使用する方法はありstd::vector<gsl::cstring_view<>>ますか?これは明らかに望ましくありませんか?
編集
そのような「変換」ビューは、より一般的に使用できるように思えます。実装定義のストレージ アプローチを公開せずに、生のポインターとしてクラスのユーザーに公開したいvectorなどの所有ポインターを持つことを検討してください。考え?std::vector<std::shared_ptr<T>>array_viewgsl::array_view<const T*>