25 template<
class char_t,
class... args_t>
34 requires std::convertible_to<const T&, qx::basic_string_view<char_t>>
47 template<
class... args_t>
50 template<
class char_t,
class... args_t>
51 concept format_acceptable_args_c =
52 !(qx::tuple_utils::contains_v<
53 tuple_utils::remove_t<details::all_char_types, std::tuple<char_t>>,
54 std::remove_cv_t<std::remove_pointer_t<std::decay_t<args_t>>>>
57 template<
class char_t>
60 template<
class format_parse_context_t>
61 constexpr
auto parse(format_parse_context_t& ctx)
63 auto it = ctx.begin();
66 throw QX_FMT_NS::format_error(
"unknown spec");
73 template<
class char_t>
78 template<
class format_parse_context_t>
79 constexpr
auto parse(format_parse_context_t& ctx)
81 auto it = ctx.begin();
93 throw QX_FMT_NS::format_error(
"unknown spec");
requires(same_variadic_args_v< args_t... >) const expr auto coalesce(args_t &&... args)
Coalesce function, C# a ?? b analogue.
#define QX_CHAR_PREFIX(value_t, ch)
Chose witch of prefixes add to char : L or none.