diff --git a/include/fmt/base.h b/include/fmt/base.h index 49868b6d751a..e9515606d587 100644 --- a/include/fmt/base.h +++ b/include/fmt/base.h @@ -587,8 +587,21 @@ using string_view = basic_string_view; template class basic_appender; using appender = basic_appender; +namespace detail { + // Checks whether T is a container with contiguous storage. -template struct is_contiguous : std::false_type {}; +template +auto is_contiguous_helper(int) + -> decltype(std::declval().data(), std::declval().size(), + std::declval().resize(size_t{}), + std::declval()[size_t{}], std::true_type{}); + +template auto is_contiguous_helper(...) -> std::false_type; + +} // namespace detail + +template +struct is_contiguous : decltype(detail::is_contiguous_helper(0)) {}; class context; template class generic_context;