Based on @Shuangcheng Ni 's answer
, a simple modification has been made to support the use of empty print2();
print2();
template <size_t _Cnt>
consteval auto make_format_string_placeholders() -> std::array<char, _Cnt * 2 + 1>
{
return []<size_t... _Idx>(std::integer_sequence<size_t, _Idx...> &&) {
return std::array{ (_Idx % 2 == 0 ? '{' : '}')..., '\0' };
}(std::make_index_sequence<_Cnt * 2>{});
}