17 #include <type_traits>
34 namespace seqan3::detail
40 template <
typename basic_
string_t>
46 template <
typename value_t,
typename traits_t,
typename allocator_t>
47 struct is_basic_string<
std::basic_string<value_t, traits_t, allocator_t>> :
std::true_type
52 template <
typename basic_
string_t>
53 constexpr
bool is_basic_string_v = is_basic_string<basic_string_t>::value;
79 template <
typename type>
81 SEQAN3_CONCEPT
container = requires (type val, type val2, type
const cval,
typename type::iterator it)
84 typename type::value_type;
85 typename type::reference;
86 typename type::const_reference;
120 requires !std::equality_comparable<typename type::value_type> || std::equality_comparable<type>;
144 template <
typename type>
151 { type{
typename type::size_type{},
typename type::value_type{}} };
152 { type{val2.begin(), val2.end()} };
157 { val.assign(val2.begin(), val2.end()) };
159 { val.assign(
typename type::size_type{},
typename type::value_type{}) };
167 std::same_as,
typename type::iterator);
169 std::same_as,
typename type::iterator);
171 std::same_as,
typename type::iterator);
172 requires detail::is_basic_string_v<type> || requires(type val)
176 std::same_as,
typename type::iterator);
209 template <
typename type>
235 template <
typename type>