Mesa (master): util: Add EXPLICIT_CONVERSION macro.

Francisco Jerez currojerez at kemper.freedesktop.org
Sun Feb 25 00:34:15 UTC 2018


Module: Mesa
Branch: master
Commit: 8d1f1ce4124c1e0dbfc5f3d0578fbee6e24140c8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8d1f1ce4124c1e0dbfc5f3d0578fbee6e24140c8

Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Feb 12 16:32:20 2018 -0800

util: Add EXPLICIT_CONVERSION macro.

This can be used to specify that a C++ conversion operator is not
meant to be used for implicit conversions, which can lead to
unintended loss of information in some cases.  Implemented as a macro
in order to keep old GCC versions happy.

Reviewed-by: Plamena Manolova <plamena.manolova at intel.com>

---

 src/util/macros.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/util/macros.h b/src/util/macros.h
index e3c785af50..6d3df90408 100644
--- a/src/util/macros.h
+++ b/src/util/macros.h
@@ -285,4 +285,14 @@ do {                       \
 #define MIN3( A, B, C ) ((A) < (B) ? MIN2(A, C) : MIN2(B, C))
 #define MAX3( A, B, C ) ((A) > (B) ? MAX2(A, C) : MAX2(B, C))
 
+/**
+ * Macro for declaring an explicit conversion operator.  Defaults to an
+ * implicit conversion if C++11 is not supported.
+ */
+#if __cplusplus >= 201103L
+#define EXPLICIT_CONVERSION explicit
+#elif defined(__cplusplus)
+#define EXPLICIT_CONVERSION
+#endif
+
 #endif /* UTIL_MACROS_H */




More information about the mesa-commit mailing list