47 std::string
text(
char id_quote, std::string_view param_mark)
const
49 auto os = std::ostringstream{};
50 os.imbue(std::locale::classic());
51 os.precision(std::numeric_limits<double>::digits10);
53 auto param_vis = overloaded{
54 [&](
null) { os <<
"null"; },
55 [&](arithmetic
auto v) { os << v; },
56 [&](std::string_view v) { os << unicode::quoted(v,
'\''); },
58 auto item_vis = overloaded{
59 [&](std::string
const& v) { os << v; },
60 [&](
id const& v) { os << unicode::quoted(v, id_quote, id_quote); },
62 if (param_mark.empty() or not v)
63 std::visit(param_vis, v);
65 os << boost::replace_first_copy(
66 std::string{param_mark},
"{}", to_chars(++num_params));
68 for (
auto& item : *
this)
69 std::visit(item_vis, item);
70 return std::move(os).str();