Skip to content

Commit 4962c28

Browse files
drslebedevwirew0rm
authored andcommitted
Fix formatter: exclude basic_string(_view) from FormattableRange to support pmr::string
* Avoids clang/libc++ formatter<std::pmr::string> ambiguity * gr::join(std::vector<std::pmr::string>) becomes valid again, no longer ambiguous element formatting. Signed-off-by: drslebedev <dr.s.lebedev@gmail.com>
1 parent cdcfdbb commit 4962c28

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

src/core/include/Formatter.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55

66
namespace opencmw {
77

8+
template<typename T>
9+
concept string_like = std::is_same_v<T, std::string> || std::is_same_v<T, std::string_view> || std::is_convertible_v<T, std::string_view>;
10+
811
template<typename R>
9-
concept FormattableRange = std::ranges::range<R> && !std::same_as<std::remove_cvref_t<R>, std::string> && !std::same_as<std::remove_cvref_t<R>, std::string_view> && !std::is_array_v<std::remove_cvref_t<R>> && std::formattable<std::ranges::range_value_t<R>, char>;
12+
concept FormattableRange = std::ranges::range<R> && !string_like<std::remove_cvref_t<R>> && !std::is_array_v<std::remove_cvref_t<R>> && std::formattable<std::ranges::range_value_t<R>, char>;
1013

1114
template<std::ranges::input_range R>
1215
requires std::formattable<std::ranges::range_value_t<R>, char>

0 commit comments

Comments
 (0)