From ede7c1f0cb59ac24441d4fe9bc149931c13d858b Mon Sep 17 00:00:00 2001 From: Dustin Graves Date: Fri, 1 Apr 2016 15:00:09 -0600 Subject: layers: Fix VS2013 build Add macro to enable/disable noexcept based on compiler support. Solution from: http://stackoverflow.com/questions/18387640/how-to-deal-with-noexcept-in-visual-studio Change-Id: Ic2d22c9247b902d6e13120b17fc0b8647f079f7f --- layers/core_validation.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/layers/core_validation.h b/layers/core_validation.h index f5935d4f..a7a2c053 100644 --- a/layers/core_validation.h +++ b/layers/core_validation.h @@ -28,6 +28,24 @@ * Author: Mark Lobodzinski */ +// Check for noexcept support +#if defined(__clang__) +#if __has_feature(cxx_noexcept) +#define HAS_NOEXCEPT +#endif +#else +#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 || \ + defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026 +#define HAS_NOEXCEPT +#endif +#endif + +#ifdef HAS_NOEXCEPT +#define NOEXCEPT noexcept +#else +#define NOEXCEPT +#endif + // Enable mem_tracker merged code #define MTMERGE 1 @@ -115,14 +133,14 @@ struct MT_OBJ_HANDLE_TYPE { VkDebugReportObjectTypeEXT type; }; -bool operator==(MT_OBJ_HANDLE_TYPE a, MT_OBJ_HANDLE_TYPE b) noexcept { +bool operator==(MT_OBJ_HANDLE_TYPE a, MT_OBJ_HANDLE_TYPE b) NOEXCEPT{ return a.handle == b.handle && a.type == b.type; } namespace std { template<> struct hash { - size_t operator()(MT_OBJ_HANDLE_TYPE obj) const noexcept { + size_t operator()(MT_OBJ_HANDLE_TYPE obj) const NOEXCEPT{ return hash()(obj.handle) ^ hash()(obj.type); } -- cgit v1.2.3