From dfdb48659a6affe5edfd273f5f66ae0179639cc8 Mon Sep 17 00:00:00 2001 From: Sam Yates <halfflat@gmail.com> Date: Thu, 7 Jul 2016 18:14:32 +0200 Subject: [PATCH] Address gcc 6.1 warnings --- src/point.hpp | 2 +- src/util/optional.hpp | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/point.hpp b/src/point.hpp index faa9d154..920e452e 100644 --- a/src/point.hpp +++ b/src/point.hpp @@ -62,7 +62,7 @@ template <typename T> T norm(point<T> const& p) { - return sqrt(p.x*p.x + p.y*p.y + p.z*p.z); + return std::sqrt(p.x*p.x + p.y*p.y + p.z*p.z); } template <typename T> diff --git a/src/util/optional.hpp b/src/util/optional.hpp index ddf978d6..92191dff 100644 --- a/src/util/optional.hpp +++ b/src/util/optional.hpp @@ -226,6 +226,13 @@ namespace detail { template <typename T> using enable_unless_optional_t = enable_if_t<!is_optional<T>::value>; + // avoid nonnull address warnings when using operator| with e.g. char array constants + template <typename T> + bool decay_bool(const T* x) { return static_cast<bool>(x); } + + template <typename T> + bool decay_bool(const T& x) { return static_cast<bool>(x); } + } // namespace detail template <typename X> @@ -398,7 +405,7 @@ typename std::enable_if< > >::type operator|(A&& a,B&& b) { - return a ? a : b; + return detail::decay_bool(a) ? a : b; } template <typename A,typename B> -- GitLab