diff --git a/format.h b/format.h index 20aac4cb..568123d8 100644 --- a/format.h +++ b/format.h @@ -28,7 +28,13 @@ #ifndef FMT_FORMAT_H_ #define FMT_FORMAT_H_ +#if defined _MSC_VER && _MSC_VER <= 1500 +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; +typedef long long intmax_t; +#else #include +#endif #include #include @@ -256,7 +262,7 @@ class numeric_limits : // isinf macro > std::isinf > ::isinf > fmt::internal::isinf if (check(sizeof(isinf(x)) == sizeof(bool) || sizeof(isinf(x)) == sizeof(int))) { - return isinf(x); + return !!isinf(x); } return !_finite(static_cast(x)); } @@ -267,7 +273,7 @@ class numeric_limits : using namespace fmt::internal; if (check(sizeof(isnan(x)) == sizeof(bool) || sizeof(isnan(x)) == sizeof(int))) { - return isnan(x); + return !!isnan(x); } return _isnan(static_cast(x)) != 0; } @@ -276,7 +282,7 @@ class numeric_limits : static bool isnegative(double x) { using namespace fmt::internal; if (check(sizeof(signbit(x)) == sizeof(int))) - return signbit(x); + return !!signbit(x); if (x < 0) return true; if (!isnotanumber(x)) return false; int dec = 0, sign = 0; @@ -313,7 +319,7 @@ void format(BasicFormatter &f, const Char *&format_str, const T &value); /** \rst A string reference. It can be constructed from a C string or ``std::string``. - + You can use one of the following typedefs for common character types: +------------+-------------------------+ @@ -1454,7 +1460,7 @@ class BasicFormatter : private internal::FormatterBase { private: BasicWriter &writer_; internal::ArgMap map_; - + FMT_DISALLOW_COPY_AND_ASSIGN(BasicFormatter); using internal::FormatterBase::get_arg; @@ -1958,7 +1964,7 @@ class SystemError : public internal::RuntimeError { *error_code* is a system error code as given by ``errno``. If *error_code* is not a valid error code such as -1, the system message may look like "Unknown error -1" and is platform-dependent. - + **Example**:: // This throws a SystemError with the description @@ -2147,7 +2153,7 @@ class BasicWriter { /** \rst Writes formatted data. - + *args* is an argument list representing arbitrary arguments. **Example**:: @@ -2675,7 +2681,7 @@ typedef BasicMemoryWriter WMemoryWriter; This class template provides operations for formatting and writing data into a fixed-size array. For writing into a dynamically growing buffer use :class:`fmt::BasicMemoryWriter`. - + Any write method will throw ``std::runtime_error`` if the output doesn't fit into the array. @@ -3208,7 +3214,7 @@ inline namespace literals { C++11 literal equivalent of :func:`fmt::format`. **Example**:: - + using namespace fmt::literals; std::string message = "The answer is {}"_format(42); \endrst @@ -3223,7 +3229,7 @@ operator"" _format(const wchar_t *s, std::size_t) { return {s}; } C++11 literal equivalent of :func:`fmt::arg`. **Example**:: - + using namespace fmt::literals; print("Elapsed time: {s:.2f} seconds", "s"_a=1.23); \endrst