diff --git a/esphome/components/mapping/mapping.h b/esphome/components/mapping/mapping.h index 92138c4377c..2b8f0d39b2a 100644 --- a/esphome/components/mapping/mapping.h +++ b/esphome/components/mapping/mapping.h @@ -45,20 +45,16 @@ template class Mapping { } else if constexpr (std::is_same_v) { esph_log_e(TAG, "Key '%s' not found in mapping", key.c_str()); } else if constexpr (std::is_integral_v) { - char buf[24]; // enough for int64_t - buf_append_printf(buf, sizeof(buf), 0, "%" PRId64, static_cast(key)); - esph_log_e(TAG, "Key '%s' not found in mapping", buf); - } else if constexpr (std::is_floating_point_v) { - char buf[24]; - buf_append_printf(buf, sizeof(buf), 0, "%g", static_cast(key)); - esph_log_e(TAG, "Key '%s' not found in mapping", buf); - } else if constexpr (std::is_enum_v) { - char buf[24]; // enough for underlying integral type - buf_append_printf(buf, sizeof(buf), 0, "%" PRId64, static_cast(key)); + char buf[24]; // enough for 64-bit integer + if constexpr (std::is_unsigned_v) { + buf_append_printf(buf, sizeof(buf), 0, "%" PRIu64, static_cast(key)); + } else { + buf_append_printf(buf, sizeof(buf), 0, "%" PRId64, static_cast(key)); + } esph_log_e(TAG, "Key '%s' not found in mapping", buf); } else { - // Fallback for custom types - likely unreachable but kept for compatibility - esph_log_e(TAG, "Key '%s' not found in mapping", to_string(key).c_str()); + // All supported key types are handled above - this should never be reached + static_assert(sizeof(K) == 0, "Unsupported key type for Mapping error logging"); } return {}; }