Skip to content

Commit c9a57d4

Browse files
committed
Provide reasonable default definition for is_contiguous
1 parent d2a159f commit c9a57d4

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

include/fmt/base.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,15 @@ template <typename T> class basic_appender;
588588
using appender = basic_appender<char>;
589589

590590
// Checks whether T is a container with contiguous storage.
591-
template <typename T> struct is_contiguous : std::false_type {};
591+
template <typename T, typename = void>
592+
struct is_contiguous : std::false_type {};
593+
594+
template <typename T>
595+
struct is_contiguous<T, void_t<decltype(std::declval<T&>().data()),
596+
decltype(std::declval<T&>().size()),
597+
decltype(std::declval<T&>().resize(size_t{})),
598+
decltype(std::declval<T&>()[size_t{}])>>
599+
: std::true_type {};
592600

593601
class context;
594602
template <typename OutputIt, typename Char> class generic_context;

0 commit comments

Comments
 (0)