Improve constexpr tests for std::any
authorEric Fiselier <eric@efcs.ca>
Wed, 7 Sep 2016 02:38:48 +0000 (02:38 +0000)
committerEric Fiselier <eric@efcs.ca>
Wed, 7 Sep 2016 02:38:48 +0000 (02:38 +0000)
llvm-svn: 280777

libcxx/test/std/utilities/any/any.class/any.cons/default.pass.cpp

index 9f9b826..ed7a948 100644 (file)
 #include "any_helpers.h"
 #include "count_new.hpp"
 
-#if TEST_HAS_BUILTIN_IDENTIFIER(__has_constant_initializer)
-// std::any must have a constexpr default constructor, but it's a non-literal
-// type so we can't create a constexpr variable. This tests that we actually
-// get 'constant initialization'.
-std::any a;
-static_assert(__has_constant_initializer(a),
-              "any must be constant initializable");
-#endif
-
 int main()
 {
     using std::any;
@@ -40,6 +31,15 @@ int main()
           );
     }
     {
+        struct TestConstexpr : public std::any {
+          constexpr TestConstexpr() : std::any() {}
+        };
+#ifdef _LIBCPP_SAFE_STATIC
+        _LIBCPP_SAFE_STATIC static std::any a;
+        ((void)a);
+#endif
+    }
+    {
         DisableAllocationGuard g; ((void)g);
         any const a;
         assertEmpty(a);