From f0d7c51f846cb9833c10e5faf908a8efdef37bce Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Thu, 23 Feb 2017 13:15:29 +0100 Subject: [PATCH 1/3] Add default copy constructor to SystemError --- fmt/format.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fmt/format.h b/fmt/format.h index 4ba63b58dec5..0073c4e75399 100644 --- a/fmt/format.h +++ b/fmt/format.h @@ -2405,6 +2405,7 @@ class SystemError : public internal::RuntimeError { SystemError(int error_code, CStringRef message) { init(error_code, message, ArgList()); } + SystemError(const SystemError&) = default; FMT_VARIADIC_CTOR(SystemError, init, int, CStringRef) FMT_API ~SystemError() FMT_DTOR_NOEXCEPT; From 2644c2fc013451308f24e9d32a3ddb871e8b752e Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Thu, 23 Feb 2017 17:32:13 +0100 Subject: [PATCH 2/3] Add FMT_DEFAULTED and FMT_DEFAULTED_COPY_CTOR macros --- fmt/format.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/fmt/format.h b/fmt/format.h index 0073c4e75399..39e0ad67e696 100644 --- a/fmt/format.h +++ b/fmt/format.h @@ -246,6 +246,23 @@ typedef __int64 intmax_t; TypeName& operator=(const TypeName&) #endif +#ifndef FMT_USE_DEFAULTED_FUNCTIONS +# define FMT_USE_DEFAULTED_FUNCTIONS 0 +#endif + +#ifndef FMT_DEFAULTED_COPY_CTOR +# if FMT_USE_DEFAULTED_FUNCTIONS || FMT_HAS_FEATURE(cxx_defaulted_functions) || \ + (FMT_GCC_VERSION >= 404 && FMT_HAS_GXX_CXX11) || FMT_MSC_VER >= 1800 +# define FMT_DEFAULTED = default +# define FMT_DEFAULTED_COPY_CTOR(TypeName) \ + TypeName(const TypeName&) = default +# else +# define FMT_DEFAULTED {} +# define FMT_DEFAULTED_COPY_CTOR(TypeName) \ + TypeName(const TypeName&) {} +# endif +#endif + #ifndef FMT_USE_USER_DEFINED_LITERALS // All compilers which support UDLs also support variadic templates. This // makes the fmt::literals implementation easier. However, an explicit check @@ -2405,7 +2422,7 @@ class SystemError : public internal::RuntimeError { SystemError(int error_code, CStringRef message) { init(error_code, message, ArgList()); } - SystemError(const SystemError&) = default; + FMT_DEFAULTED_COPY_CTOR(SystemError); FMT_VARIADIC_CTOR(SystemError, init, int, CStringRef) FMT_API ~SystemError() FMT_DTOR_NOEXCEPT; From bb6eccf90a3e2281e1f74ebc37eff2b48e1ce1c7 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Fri, 24 Feb 2017 20:54:15 +0100 Subject: [PATCH 3/3] Incorporate PR feedback --- fmt/format.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/fmt/format.h b/fmt/format.h index 39e0ad67e696..6a0837f55021 100644 --- a/fmt/format.h +++ b/fmt/format.h @@ -253,13 +253,10 @@ typedef __int64 intmax_t; #ifndef FMT_DEFAULTED_COPY_CTOR # if FMT_USE_DEFAULTED_FUNCTIONS || FMT_HAS_FEATURE(cxx_defaulted_functions) || \ (FMT_GCC_VERSION >= 404 && FMT_HAS_GXX_CXX11) || FMT_MSC_VER >= 1800 -# define FMT_DEFAULTED = default # define FMT_DEFAULTED_COPY_CTOR(TypeName) \ - TypeName(const TypeName&) = default + TypeName(const TypeName&) = default; # else -# define FMT_DEFAULTED {} -# define FMT_DEFAULTED_COPY_CTOR(TypeName) \ - TypeName(const TypeName&) {} +# define FMT_DEFAULTED_COPY_CTOR(TypeName) # endif #endif @@ -2422,7 +2419,7 @@ class SystemError : public internal::RuntimeError { SystemError(int error_code, CStringRef message) { init(error_code, message, ArgList()); } - FMT_DEFAULTED_COPY_CTOR(SystemError); + FMT_DEFAULTED_COPY_CTOR(SystemError) FMT_VARIADIC_CTOR(SystemError, init, int, CStringRef) FMT_API ~SystemError() FMT_DTOR_NOEXCEPT;