From 2a10d75b16c9426d12167c77ad0ab5297d267a58 Mon Sep 17 00:00:00 2001 From: iPherian Date: Tue, 10 Dec 2019 02:18:40 -0800 Subject: [PATCH] Fix compilation with VS2015 (#1450) VS2015 does not support the __pragma(...) syntax in the midst of a class declaration, so move it to just before the declaration. --- include/fmt/core.h | 8 ++++++-- include/fmt/format.h | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/fmt/core.h b/include/fmt/core.h index a94ec532..eadbad69 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -171,13 +171,17 @@ # else # define FMT_NO_W4275 # endif +# define FMT_CLASS_API FMT_NO_W4275 # ifdef FMT_EXPORT -# define FMT_API FMT_NO_W4275 __declspec(dllexport) +# define FMT_API __declspec(dllexport) # elif defined(FMT_SHARED) -# define FMT_API FMT_NO_W4275 __declspec(dllimport) +# define FMT_API __declspec(dllimport) # define FMT_EXTERN_TEMPLATE_API FMT_API # endif #endif +#ifndef FMT_CLASS_API +# define FMT_CLASS_API +#endif #ifndef FMT_API # define FMT_API #endif diff --git a/include/fmt/format.h b/include/fmt/format.h index 01f41f5c..54cedcfa 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -688,6 +688,7 @@ using memory_buffer = basic_memory_buffer; using wmemory_buffer = basic_memory_buffer; /** A formatting error such as invalid format string. */ +FMT_CLASS_API class FMT_API format_error : public std::runtime_error { public: explicit format_error(const char* message) : std::runtime_error(message) {} @@ -2699,6 +2700,7 @@ class arg_formatter : public internal::arg_formatter_base { An error returned by an operating system or a language runtime, for example a file opening error. */ +FMT_CLASS_API class FMT_API system_error : public std::runtime_error { private: void init(int err_code, string_view format_str, format_args args);