Make variant only available when compiling for C++14 or greater
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Aug 2016 23:35:17 +0000 (23:35 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Aug 2016 23:35:17 +0000 (23:35 +0000)
https://bugs.webkit.org/show_bug.cgi?id=160813

Patch by Sam Weinig <sam@webkit.org> on 2016-08-12
Reviewed by Anders Carlsson.

* wtf/Compiler.h:
* wtf/StdLibExtras.h:
* wtf/Variant.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@204433 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WTF/ChangeLog
Source/WTF/wtf/Compiler.h
Source/WTF/wtf/StdLibExtras.h
Source/WTF/wtf/Variant.h

index 67fe222..358d8dd 100644 (file)
@@ -1,3 +1,14 @@
+2016-08-12  Sam Weinig  <sam@webkit.org>
+
+        Make variant only available when compiling for C++14 or greater
+        https://bugs.webkit.org/show_bug.cgi?id=160813
+
+        Reviewed by Anders Carlsson.
+
+        * wtf/Compiler.h:
+        * wtf/StdLibExtras.h:
+        * wtf/Variant.h:
+
 2016-08-11  Maureen Daum  <mdaum@apple.com>
 
         Add NSButtonType to AppKitCompatibilityDeclarations.h.
index 9987c94..faf19ba 100644 (file)
 #define WTF_COMPILER_SUPPORTS_CXX_USER_LITERALS __has_feature(cxx_user_literals)
 #define WTF_COMPILER_SUPPORTS_FALLTHROUGH_WARNINGS __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
 #define WTF_COMPILER_SUPPORTS_CXX_EXCEPTIONS __has_feature(cxx_exceptions)
+
+#ifdef __cplusplus
+#if __cplusplus <= 201103L
+#define WTF_CPP_STD_VER 11
+#elif __cplusplus <= 201402L
+#define WTF_CPP_STD_VER 14
+#endif
+#endif
+
 #endif
 
 /* COMPILER(GCC_OR_CLANG) - GNU Compiler Collection or Clang */
index 7945432..c3eb070 100644 (file)
@@ -403,6 +403,8 @@ ALWAYS_INLINE constexpr typename remove_reference<T>::type&& move(T&& value)
     return move(forward<T>(value));
 }
 
+#if !COMPILER(CLANG) || WTF_CPP_STD_VER >= 14
+
 template<typename... Types>
 using variant = std::experimental::variant<Types...>;
 
@@ -411,6 +413,8 @@ using std::experimental::get_if;
 using std::experimental::holds_alternative;
 using std::experimental::visit;
 
+#endif
+
 } // namespace std
 
 #define WTFMove(value) std::move<WTF::CheckMoveParameter>(value)
index f359d51..102e656 100644 (file)
@@ -57,6 +57,8 @@
 #pragma warning(disable:4814)
 #endif
 
+#if !COMPILER(CLANG) || WTF_CPP_STD_VER >= 14
+
 namespace std {
 namespace experimental {
 
@@ -2058,6 +2060,8 @@ struct hash<experimental::variant<_Types...>>{
 
 } // namespace std
 
+#endif // !COMPILER(CLANG) || WTF_CPP_STD_VER >= 14
+
 #if COMPILER(MSVC)
 #pragma warning(pop)
 #endif