add as_span overload for basic_string which doesn't have nonconst .data() like other contiguous containers

This commit is contained in:
Elron A. Yellin
2015-11-20 17:50:02 -05:00
parent 04050a2162
commit e4d8d35af5
2 changed files with 17 additions and 0 deletions

View File

@ -1568,6 +1568,14 @@ template <typename Cont>
constexpr auto as_span(Cont &&arr) -> std::enable_if_t<!details::is_span<std::decay_t<Cont>>::value,
span<std::remove_reference_t<decltype(arr.size(), *arr.data())>, dynamic_range>> = delete;
// from basic_string which doesn't have nonconst .data() member like other contiguous containers
template <typename CharT, typename Traits, typename Allocator>
constexpr auto as_span(std::basic_string<CharT, Traits, Allocator> &str) -> span<CharT, dynamic_range>
{
fail_fast_assert(str.size() < PTRDIFF_MAX);
return {&str[0], static_cast<std::ptrdiff_t>(str.size())};
}
template <typename ValueType, size_t Rank>
class strided_span
{