PROTON-1324: c++ correct implementation of proton::is_signed<char>
This uses std::numeric_limits<char> to get the platform setting, which works on
C++03 and should be portable.
diff --git a/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp b/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
index ee49a15..3d66f94 100644
--- a/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
+++ b/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
@@ -30,6 +30,7 @@
#include "./config.hpp"
#include "../types_fwd.hpp"
#include "../type_id.hpp"
+#include <limits>
namespace proton {
namespace internal {
@@ -47,7 +48,7 @@
template <class T> struct is_signed : public false_type {};
template <> struct is_integral<char> : public true_type {};
-template <> struct is_signed<char> : public false_type {};
+template <> struct is_signed<char> { static const bool value = std::numeric_limits<char>::is_signed; };
template <> struct is_integral<unsigned char> : public true_type {};
template <> struct is_integral<unsigned short> : public true_type {};