Hi @vitaut Among recent changes in v11 you've refactored traits for testing if type is a specialization of `std::back_insert_iterator`. As a result, the following static assert no longer works: ```C++ #include <fmt/format.h> #include <iterator> using It = decltype(std::back_inserter(std::declval<fmt::memory_buffer&>())); static_assert(fmt::detail::is_back_insert_iterator<It>::value); ``` This impacts e.g. `fmt::format_to()` that fails to select an optimized overload for `std::back_insert_iterator<fmt::memory_buffer>` and becomes horribly slow. I actually discovered this issue while working on a benchmark where I noticed that formatting to a preallocated `fmt::memory_buffer` is for some reason much slower than `fmt::format()`. To fix the issue you need to swap the headers order, i.e. make sure `<iterator>` is included *before* `<fmt/base.h>` s.t. ADL can really see the `back_inserter(std::declval<Container&>())`: ```C++ #include <iterator> #include <fmt/format.h> using It = decltype(std::back_inserter(std::declval<fmt::memory_buffer&>())); static_assert(fmt::detail::is_back_insert_iterator<It>::value); ``` I suppose the easiest way to fix this is either revert to prev version of traits (which IMO is quite fine) or `include <iterator>` in the `fmt/base.h`.