Improve constexpr tests for std::any

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@280777 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier
2016-09-07 02:38:48 +00:00
parent b9231a2326
commit db4d7e96ca

View File

@@ -21,15 +21,6 @@
#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;
@@ -39,6 +30,15 @@ int main()
, "Must be default constructible"
);
}
{
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;