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
}
概要
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;
}
出力
Hello
バージョン
言語
- C++20
処理系
- Clang:
- GCC: 10.1 ✅
- Visual C++: ??