diff --git a/include/spdlog/details/log_attr.h b/include/spdlog/details/log_attr.h index 38df98d5..1bd831a2 100644 --- a/include/spdlog/details/log_attr.h +++ b/include/spdlog/details/log_attr.h @@ -31,6 +31,7 @@ struct Value { std::string _value; + // string types Value(string_view_t v) { scramble(_value, v); } @@ -40,15 +41,49 @@ struct Value Value(const char* v) { scramble(_value, v); } - Value(long v) { + + // integer types + // probably better to do this with templates, but constraints are needed + // concepts would be nice here, but spdlog is c++11 + // https://stackoverflow.com/questions/41552514/is-overloading-on-all-of-the-fundamental-integer-types-is-sufficient-to-capture + + // int8_t + Value(signed char v) { _value = std::to_string(v); } - Value(long long v) { + // uint8_t + Value(unsigned char v) { + _value = std::to_string(v); + } + // int16_t + Value(short v) { + _value = std::to_string(v); + } + // uint16_t + Value(unsigned short v) { + _value = std::to_string(v); + } + // int32_t + Value(int v) { _value = std::to_string(v); } + // uint32_t + Value(unsigned int v) { + _value = std::to_string(v); + } + // int64_t + Value(long v) { + _value = std::to_string(v); + } + // uint64_t Value(unsigned long v) { _value = std::to_string(v); } + // some compilers use long long for int64_t + Value(long long v) { + _value = std::to_string(v); + } + // some compilers use unsigned long long for uint64_t Value(unsigned long long v) { _value = std::to_string(v); }