- string_view[meta header]
- std[meta namespace]
- basic_string_view[meta class]
- cpp20[meta cpp]
namespace std {
template <class It, class End>
basic_string_view(It, End)
-> basic_string_view<iter_value_t<It>>; // (1) C++20
template<class R>
basic_string_view(R&&)
-> basic_string_view<ranges::range_value_t<R>>; // (2) C++23
}
- iter_value_t[link /reference/iterator/iter_value_t.md]
- ranges::range_value_t[link /reference/ranges/range_value_t.md]
std::basic_string_view
クラステンプレートの型推論補助。イテレータ範囲やレンジから推論する。
- (1) :
It
はcontiguous_iterator
の要件を満たすことEnd
はsized_sentinel_for
<It>
の要件を満たすこと
- (2) :
R
はranges::contiguous_range
の要件を満たすこと
#include <iostream>
#include <string_view>
int main()
{
std::string s = "Hello";
std::basic_string_view sv{s.begin(), s.end()};
std::cout << sv << std::endl;
}
- s.begin()[link /reference/string/basic_string/begin.md]
- s.end()[link /reference/string/basic_string/end.md]
Hello
- C++20
- Clang:
- GCC: 10.1 [mark verified]
- Visual C++: ??