From 4a4cb9f7a4dc1521c2b0ea550caf24ff4c7e6da4 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Tue, 19 Sep 2017 12:24:36 +0100 Subject: [PATCH 1/3] Use is_zero workaround on clang The same warning appears on clang for windows, but the workaround wasn't used because the gcc macro wasn't defined. --- include/boost/functional/hash/detail/hash_float.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/functional/hash/detail/hash_float.hpp b/include/boost/functional/hash/detail/hash_float.hpp index 9fb8168..1816c57 100644 --- a/include/boost/functional/hash/detail/hash_float.hpp +++ b/include/boost/functional/hash/detail/hash_float.hpp @@ -241,7 +241,7 @@ namespace boost template inline bool is_zero(T v) { -#if !defined(__GNUC__) +#if !defined(__GNUC__) && !defined(__clang__) return v == 0; #else // GCC's '-Wfloat-equal' will complain about comparing From 170558e4fa77134ada8a231bcb4532bd117f951e Mon Sep 17 00:00:00 2001 From: Daniel James Date: Mon, 2 Oct 2017 13:42:23 +0100 Subject: [PATCH 2/3] Initial explicit-failures-markup.xml --- meta/explicit-failures-markup.xml | 91 +++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 meta/explicit-failures-markup.xml diff --git a/meta/explicit-failures-markup.xml b/meta/explicit-failures-markup.xml new file mode 100644 index 0000000..b552412 --- /dev/null +++ b/meta/explicit-failures-markup.xml @@ -0,0 +1,91 @@ + + + + + + + + + + hash_value is not overloaded for arrays for older versions + of Visual C++. There is a work around so that + boost::hash<T[N]>, boost::hash_combine and boost::hash_range + work. + + + + + + + + + + + + + + + + + On these compilers the wrong overload of hash_value is called + when the argument is a hash function pointer. So calling + hash_value doesn't work but boost::hash does work (and it's + recommended that user never call hash_value directly so this + shouldn't be a problem). + + + + + + + + + This platform has poor support for long double so + the hash function perform poorly for values out of the range + of double or if they differ at a greater precision + that double is capable of representing. + + + + + + + + + + These examples only work on compilers with support for ADL. + It is possible to work around this, but I wanted to keep the + example code as clean as possible. + + + + + + + + It appears that Borland doesn't find friend functions defined + in a class by ADL. This is easily fixed but this example is + meant to show the typical way of customising boost::hash, not + the portable way. + + + + + + + + The test demonstrates a Borland bug - functions that aren't + in a namespace don't appear to be found by ADL. + + + + + + + + Debug containers aren't supported on Apple's version of gcc 4.2. + + + + From d803b3bdc0c458027d3fa80a36395bb8a1ef027c Mon Sep 17 00:00:00 2001 From: Daniel James Date: Mon, 2 Oct 2017 23:31:54 +0100 Subject: [PATCH 3/3] Remove schema stuff, as it doesn't work --- meta/explicit-failures-markup.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/meta/explicit-failures-markup.xml b/meta/explicit-failures-markup.xml index b552412..5f21dd0 100644 --- a/meta/explicit-failures-markup.xml +++ b/meta/explicit-failures-markup.xml @@ -1,6 +1,5 @@ - +