From ef5bcadd95ef81598ef1f1f75afc5f4186e6fd4d Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Tue, 30 Apr 2019 17:20:14 +0900 Subject: [PATCH 1/5] Fixed #777. Removed SFINAE. Use size type extractor. --- include/msgpack/v1/pack.hpp | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/include/msgpack/v1/pack.hpp b/include/msgpack/v1/pack.hpp index 14da8642..677c39fa 100644 --- a/include/msgpack/v1/pack.hpp +++ b/include/msgpack/v1/pack.hpp @@ -620,31 +620,13 @@ private: void append_buffer(const char* buf, size_t len) { - append_buffer(m_stream, &Stream::write, buf, len); + append_buffer(&Stream::write, buf, len); } - template - typename enable_if< - is_same< - std::ostream& (std::ostream::*)(const char*, std::streamsize), - Write - >::value - >::type - append_buffer(S& s, Write, const char* buf, size_t len) + template + void append_buffer(Ret (Cls::*)(const char*, SizeType), const char* buf, size_t len) { - s.write(buf, static_cast(len)); - } - - template - typename enable_if< - !is_same< - std::ostream& (std::ostream::*)(const char*, std::streamsize), - Write - >::value - >::type - append_buffer(S& s, Write, const char* buf, size_t len) - { - s.write(buf, len); + m_stream.write(buf, static_cast(len)); } private: From 33a8d8c30f11b612d3edce0d6832593aeaee6075 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Wed, 1 May 2019 16:08:17 +0900 Subject: [PATCH 2/5] Added noexcept overload for C++11 and later. --- include/msgpack/v1/pack.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/msgpack/v1/pack.hpp b/include/msgpack/v1/pack.hpp index 677c39fa..f459bc41 100644 --- a/include/msgpack/v1/pack.hpp +++ b/include/msgpack/v1/pack.hpp @@ -629,6 +629,14 @@ private: m_stream.write(buf, static_cast(len)); } +#if !defined(MSGPACK_USE_CPP03) + template + void append_buffer(Ret (Cls::*)(const char*, SizeType) noexcept(true), const char* buf, size_t len) + { + m_stream.write(buf, static_cast(len)); + } +#endif // !defined(MSGPACK_USE_CPP03) + private: Stream& m_stream; From 8febbfd9f596c2614e1c36af8f941860ee240bfe Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Wed, 1 May 2019 16:42:15 +0900 Subject: [PATCH 3/5] Fixed noexcept. --- include/msgpack/v1/pack.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/msgpack/v1/pack.hpp b/include/msgpack/v1/pack.hpp index f459bc41..c3987702 100644 --- a/include/msgpack/v1/pack.hpp +++ b/include/msgpack/v1/pack.hpp @@ -631,7 +631,7 @@ private: #if !defined(MSGPACK_USE_CPP03) template - void append_buffer(Ret (Cls::*)(const char*, SizeType) noexcept(true), const char* buf, size_t len) + void append_buffer(Ret (Cls::*)(const char*, SizeType) noexcept, const char* buf, size_t len) noexcept { m_stream.write(buf, static_cast(len)); } From c93a42b5f4972d80c09ca96546f60d346b3ee537 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Wed, 1 May 2019 17:20:39 +0900 Subject: [PATCH 4/5] Separate C++03 and 11. --- include/msgpack/v1/pack.hpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/include/msgpack/v1/pack.hpp b/include/msgpack/v1/pack.hpp index c3987702..3d9b8eb1 100644 --- a/include/msgpack/v1/pack.hpp +++ b/include/msgpack/v1/pack.hpp @@ -623,19 +623,29 @@ private: append_buffer(&Stream::write, buf, len); } +#if defined(MSGPACK_USE_CPP03) + template void append_buffer(Ret (Cls::*)(const char*, SizeType), const char* buf, size_t len) { m_stream.write(buf, static_cast(len)); } -#if !defined(MSGPACK_USE_CPP03) +#else // defined(MSGPACK_USE_CPP03) + template - void append_buffer(Ret (Cls::*)(const char*, SizeType) noexcept, const char* buf, size_t len) noexcept + void append_buffer(Ret (Cls::*)(const char*, SizeType) noexcept(false), const char* buf, size_t len) noexcept(false) { m_stream.write(buf, static_cast(len)); } -#endif // !defined(MSGPACK_USE_CPP03) + + template + void append_buffer(Ret (Cls::*)(const char*, SizeType) noexcept(true), const char* buf, size_t len) noexcept(true) + { + m_stream.write(buf, static_cast(len)); + } + +#endif // defined(MSGPACK_USE_CPP03) private: Stream& m_stream; From 6a08446b3dabd62e2304c74dddc9ee7982f7a645 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Wed, 1 May 2019 18:00:07 +0900 Subject: [PATCH 5/5] Removed noexcept overload. --- include/msgpack/v1/pack.hpp | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/include/msgpack/v1/pack.hpp b/include/msgpack/v1/pack.hpp index 3d9b8eb1..677c39fa 100644 --- a/include/msgpack/v1/pack.hpp +++ b/include/msgpack/v1/pack.hpp @@ -623,30 +623,12 @@ private: append_buffer(&Stream::write, buf, len); } -#if defined(MSGPACK_USE_CPP03) - template void append_buffer(Ret (Cls::*)(const char*, SizeType), const char* buf, size_t len) { m_stream.write(buf, static_cast(len)); } -#else // defined(MSGPACK_USE_CPP03) - - template - void append_buffer(Ret (Cls::*)(const char*, SizeType) noexcept(false), const char* buf, size_t len) noexcept(false) - { - m_stream.write(buf, static_cast(len)); - } - - template - void append_buffer(Ret (Cls::*)(const char*, SizeType) noexcept(true), const char* buf, size_t len) noexcept(true) - { - m_stream.write(buf, static_cast(len)); - } - -#endif // defined(MSGPACK_USE_CPP03) - private: Stream& m_stream;