[Bf-blender-cvs] [bd3de93] master: Gtest: Fix/workaround MSVC complains about use of struct with alignment

Sergey Sharybin noreply at git.blender.org
Thu Dec 15 17:54:16 CET 2016


Commit: bd3de93557ce1e3af1ec33530add1f7831f09db6
Author: Sergey Sharybin
Date:   Thu Dec 15 17:53:27 2016 +0100
Branches: master
https://developer.blender.org/rBbd3de93557ce1e3af1ec33530add1f7831f09db6

Gtest: Fix/workaround MSVC complains about use of struct with alignment

===================================================================

M	extern/gtest/include/gtest/internal/gtest-internal.h

===================================================================

diff --git a/extern/gtest/include/gtest/internal/gtest-internal.h b/extern/gtest/include/gtest/internal/gtest-internal.h
index ebd1cf6..ca15a2f 100644
--- a/extern/gtest/include/gtest/internal/gtest-internal.h
+++ b/extern/gtest/include/gtest/internal/gtest-internal.h
@@ -60,6 +60,10 @@
 #include <string>
 #include <vector>
 
+#if (__cplusplus > 199711L) || (defined(_MSC_VER) && _MSC_VER >= 1800)
+# include <type_traits>
+#endif
+
 #include "gtest/gtest-message.h"
 #include "gtest/internal/gtest-string.h"
 #include "gtest/internal/gtest-filepath.h"
@@ -854,6 +858,7 @@ struct AddReference<T&> { typedef T& type; };  // NOLINT
 template <typename From, typename To>
 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<From, To>::value;
 #else
   // MSVC warns about implicitly converting from double to int for
   // possible loss of data, so we need to temporarily disable the




More information about the Bf-blender-cvs mailing list