diff --git a/rx/include/rx/format.hpp b/rx/include/rx/format.hpp index bed16fbef..d48fe72df 100644 --- a/rx/include/rx/format.hpp +++ b/rx/include/rx/format.hpp @@ -197,16 +197,20 @@ struct std::formatter { std::integral_constant, std::integer_sequence) -> std::string { std::string_view result; + auto queryIndex = [&]( + std::integral_constant, + std::int64_t value) { + if (value == Index) { + if constexpr (requires { rx::getNameOf(Index)>(); }) { + result = rx::getNameOf(Index)>(); + } + } + }; + if (value < 0) { - ((-value == I + Offset - ? ((result = rx::getNameOf(-(I + Offset))>()), 0) - : 0), - ...); + (queryIndex(std::integral_constant{}, value), ...); } else { - ((value == I + Offset - ? ((result = rx::getNameOf(I + Offset)>()), 0) - : 0), - ...); + (queryIndex(std::integral_constant{}, value), ...); } if (!result.empty()) {