Make tests for is_empty better. No functional change.

llvm-svn: 283339
This commit is contained in:
Marshall Clow 2016-10-05 17:01:16 +00:00
parent b530f1649e
commit d836a9d5f1
1 changed files with 31 additions and 5 deletions

View File

@ -11,6 +11,14 @@
// is_empty
// T is a non-union class type with:
// no non-static data members,
// no unnamed bit-fields of non-zero length,
// no virtual member functions,
// no virtual base classes,
// and no base class B for which is_empty_v<B> is false.
#include <type_traits>
#include "test_macros.h"
@ -44,22 +52,33 @@ void test_is_not_empty()
#endif
}
class Empty
{
};
class Empty {};
struct NotEmpty { int foo; };
class NotEmpty
class VirtualFn
{
virtual ~NotEmpty();
virtual ~VirtualFn();
};
union Union {};
struct EmptyBase : public Empty {};
struct VirtualBase : virtual Empty {};
struct NotEmptyBase : public NotEmpty {};
struct StaticMember { static int foo; };
struct NonStaticMember { int foo; };
struct bit_zero
{
int : 0;
};
struct bit_one
{
int : 1;
};
int main()
{
test_is_not_empty<void>();
@ -72,7 +91,14 @@ int main()
test_is_not_empty<char[]>();
test_is_not_empty<Union>();
test_is_not_empty<NotEmpty>();
test_is_not_empty<VirtualFn>();
test_is_not_empty<VirtualBase>();
test_is_not_empty<NotEmptyBase>();
test_is_not_empty<NonStaticMember>();
test_is_empty<bit_one>();
test_is_empty<Empty>();
test_is_empty<EmptyBase>();
test_is_empty<StaticMember>();
test_is_empty<bit_zero>();
}