This fixes the code analysis warnings pointed out by @dmachaj. We can't just really switch to using Args const&... because some types cannot be formatted as const lvalues - most notably ranges::filter_view. So instead, we take a forwarding reference, but don't actually call std::forward, resulting in all the arguments being passed to std::format as lvalue references.
Formatters that care about the exact value category should feel bad.
This fixes the code analysis warnings pointed out by @dmachaj. We can't just really switch to using
Args const&...
because some types cannot be formatted as const lvalues - most notablyranges::filter_view
. So instead, we take a forwarding reference, but don't actually callstd::forward
, resulting in all the arguments being passed tostd::format
as lvalue references.Formatters that care about the exact value category should feel bad.