Commit a7e98616 authored by Victor Zverovich's avatar Victor Zverovich

Workaround another MSVC madness

parent db9ffa14
...@@ -3518,6 +3518,23 @@ constexpr Iterator parse_format_specs(Iterator it, SpecHandler &handler) { ...@@ -3518,6 +3518,23 @@ constexpr Iterator parse_format_specs(Iterator it, SpecHandler &handler) {
return it; return it;
} }
template <typename Handler, typename Char>
struct id_adapter {
constexpr explicit id_adapter(Handler &h): handler(h) {}
constexpr void operator()() { handler.on_arg_id(); }
constexpr void operator()(unsigned id) { handler.on_arg_id(id); }
constexpr void operator()(basic_string_view<Char> id) {
handler.on_arg_id(id);
}
constexpr void on_error(const char *message) {
handler.on_error(message);
}
Handler &handler;
};
template <typename Iterator, typename Handler> template <typename Iterator, typename Handler>
constexpr void parse_format_string(Iterator it, Handler &handler) { constexpr void parse_format_string(Iterator it, Handler &handler) {
using char_type = typename std::iterator_traits<Iterator>::value_type; using char_type = typename std::iterator_traits<Iterator>::value_type;
...@@ -3536,23 +3553,7 @@ constexpr void parse_format_string(Iterator it, Handler &handler) { ...@@ -3536,23 +3553,7 @@ constexpr void parse_format_string(Iterator it, Handler &handler) {
} }
handler.on_text(start, it - 1); handler.on_text(start, it - 1);
struct id_adapter { it = parse_arg_id(it, id_adapter<Handler, char_type>(handler));
constexpr explicit id_adapter(Handler &h): handler(h) {}
constexpr void operator()() { handler.on_arg_id(); }
constexpr void operator()(unsigned id) { handler.on_arg_id(id); }
constexpr void operator()(basic_string_view<char_type> id) {
handler.on_arg_id(id);
}
constexpr void on_error(const char *message) {
handler.on_error(message);
}
Handler &handler;
} adapter(handler);
it = parse_arg_id(it, adapter);
if (*it == '}') { if (*it == '}') {
handler.on_replacement_field(it); handler.on_replacement_field(it);
} else if (*it == ':') { } else if (*it == ':') {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment