8concept SqlStringInterface =
13 std::basic_string_view<typename S::value_type> sv)
18 typename S::value_type;
20 typename S::const_iterator;
21 typename S::pointer_type;
22 typename S::const_pointer_type;
27 std::is_default_constructible_v<S>;
28 std::is_copy_constructible_v<S>;
29 std::is_move_constructible_v<S>;
34 { cs.size() } -> std::same_as<std::size_t>;
35 { cs.capacity() } -> std::same_as<std::size_t>;
36 { cs.empty() } -> std::same_as<bool>;
41 { s.clear() } -> std::same_as<void>;
42 { s.resize(n) } -> std::same_as<void>;
43 { s.setsize(n) } -> std::same_as<void>;
44 { s.reserve(n) } -> std::same_as<void>;
46 { s.push_back(ch) } -> std::same_as<void>;
47 { s.pop_back() } -> std::same_as<void>;
52 { s[n] } -> std::same_as<typename S::value_type&>;
53 { cs[n] } -> std::same_as<typename S::value_type const&>;
58 { s.begin() } -> std::same_as<typename S::iterator>;
59 { s.end() } -> std::same_as<typename S::iterator>;
60 { cs.begin() } -> std::same_as<typename S::const_iterator>;
61 { cs.end() } -> std::same_as<typename S::const_iterator>;
63 { s.data() } -> std::same_as<typename S::pointer_type>;
64 { cs.data() } -> std::same_as<typename S::const_pointer_type>;
65 { s.c_str() } -> std::same_as<typename S::const_pointer_type>;
66 { cs.c_str() } -> std::same_as<typename S::const_pointer_type>;
72 std::same_as<std::basic_string_view<typename S::value_type>>;
75 std::same_as<std::basic_string_view<typename S::value_type>>;
78 std::same_as<std::basic_string<typename S::value_type>>;
80 { cs.ToStringView() } ->
81 std::same_as<std::basic_string_view<typename S::value_type>>;
83 static_cast<std::basic_string<typename S::value_type>
>(cs);
84 static_cast<std::basic_string_view<typename S::value_type>
>(cs);
89 { cs == sv } -> std::same_as<bool>;
90 { cs != sv } -> std::same_as<bool>;