From bd3de93557ce1e3af1ec33530add1f7831f09db6 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 15 Dec 2016 17:53:27 +0100 Subject: Gtest: Fix/workaround MSVC complains about use of struct with alignment --- extern/gtest/include/gtest/internal/gtest-internal.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'extern') diff --git a/extern/gtest/include/gtest/internal/gtest-internal.h b/extern/gtest/include/gtest/internal/gtest-internal.h index ebd1cf615de..ca15a2f3a78 100644 --- a/extern/gtest/include/gtest/internal/gtest-internal.h +++ b/extern/gtest/include/gtest/internal/gtest-internal.h @@ -60,6 +60,10 @@ #include #include +#if (__cplusplus > 199711L) || (defined(_MSC_VER) && _MSC_VER >= 1800) +# include +#endif + #include "gtest/gtest-message.h" #include "gtest/internal/gtest-string.h" #include "gtest/internal/gtest-filepath.h" @@ -854,6 +858,7 @@ struct AddReference { typedef T& type; }; // NOLINT template class ImplicitlyConvertible { private: +#if !((__cplusplus > 199711L) || (defined(_MSC_VER) && _MSC_VER >= 1800)) // We need the following helper functions only for their types. // They have no implementations. @@ -874,6 +879,7 @@ class ImplicitlyConvertible { // implicitly converted to type To. static char Helper(To); static char (&Helper(...))[2]; // NOLINT +#endif // We have to put the 'public' section after the 'private' section, // or MSVC refuses to compile the code. @@ -883,6 +889,8 @@ class ImplicitlyConvertible { // instantiation. The simplest workaround is to use its C++0x type traits // functions (C++Builder 2009 and above only). static const bool value = __is_convertible(From, To); +#elif (__cplusplus > 199711L) || (defined(_MSC_VER) && _MSC_VER >= 1800) + static const bool value = std::is_convertible::value; #else // MSVC warns about implicitly converting from double to int for // possible loss of data, so we need to temporarily disable the -- cgit v1.2.3