Ich hatte erwartet, dass ein einfaches Konzept funktioniert:
Code: Select all
template
concept Formattable = requires(T p) { std::format("{.2}", p); };
static_assert(Formattable); // OK
static_assert(!Formattable); // Fails
Also habe ich versucht, die interne constexpr-Maschinerie zu verwenden, aber das hat auch nicht so einfach funktioniert:
Code: Select all
template
consteval bool formattable()
{
auto fmt_parse_ctx = std::format_parse_context(".2");
return std::formatter().parse(fmt_parse_ctx) == fmt_parse_ctx.end();
}
static_assert(formattable()); // OK
static_assert(!formattable()); // formattable does not compile
Mobile version