diff --git a/include/fmt/ranges.h b/include/fmt/ranges.h index 8d44cd1e..7bbc1336 100644 --- a/include/fmt/ranges.h +++ b/include/fmt/ranges.h @@ -352,8 +352,7 @@ template struct is_range { * that should be formatted by iterating over the underlying container. * */ -FMT_EXPORT -template struct is_container_adaptor : std::true_type {}; + namespace detail { @@ -774,11 +773,14 @@ template struct all { }; } // namespace detail +FMT_EXPORT +template struct is_container_adaptor: detail::is_container_adaptor_like {}; + + template struct formatter< T, Char, - enable_if_t, - is_container_adaptor, + enable_if_t, bool_constant::value == range_format::disabled>>::value>> : formatter, Char> { diff --git a/test/ranges-test.cc b/test/ranges-test.cc index 7df723f7..f82569b2 100644 --- a/test/ranges-test.cc +++ b/test/ranges-test.cc @@ -17,10 +17,6 @@ #include #include -#include "fmt/base.h" -#include "fmt/ranges.h" -#include "posix-mock.h" - #if FMT_CPLUSPLUS > 201703L && FMT_HAS_INCLUDE() # include #endif @@ -807,16 +803,10 @@ namespace test_detail { struct partial_opt_out_wrapper { using container_type = std::vector; std::vector c = {1, 2, 3}; - - typename std::vector::const_iterator begin() const { return c.begin(); } - typename std::vector::const_iterator end() const { return c.end(); } }; } // namespace test_detail namespace fmt { - template - struct is_range, char> : std::false_type {}; - template struct is_container_adaptor> : std::false_type {};