13#ifndef RANGES_V3_VIEW_C_STR_HPP
14#define RANGES_V3_VIEW_C_STR_HPP
21#include <range/v3/utility/static_const.hpp>
25#include <range/v3/detail/prologue.hpp>
33 struct is_char_type_ : std::false_type
37 struct is_char_type_<char> : std::true_type
41 struct is_char_type_<wchar_t> : std::true_type
45 struct is_char_type_<char16_t> : std::true_type
49 struct is_char_type_<char32_t> : std::true_type
53 using is_char_type = is_char_type_<meta::_t<std::remove_cv<T>>>;
66 template(
typename Char, std::size_t N)(
67 requires detail::is_char_type<Char>::value)
70 return {&sz[0], &sz[N - 1]};
74 template(
typename Char)(
75 requires detail::is_char_type<Char>::value)
79 operator()(Char * sz)
const volatile
82 return ranges::views::delimit(sz, ch_t(0));
88 RANGES_INLINE_VARIABLE(
c_str_fn, c_str)
92#include <range/v3/detail/epilogue.hpp>
typename T::type _t
Type alias for T::type.
Definition meta.hpp:141
Definition delimit.hpp:41
Definition subrange.hpp:196
View a \0-terminated C string (e.g.
Definition c_str.hpp:64