diff options
author | Marshall Clow <mclow.lists@gmail.com> | 2015-11-30 04:30:02 +0000 |
---|---|---|
committer | Marshall Clow <mclow.lists@gmail.com> | 2015-11-30 04:30:02 +0000 |
commit | e12a536d76219019af68a8a401764dc082e736e8 (patch) | |
tree | d81bd5047c1c2542945c8c3a5afefcfef5f39510 /libcxx/test/std | |
parent | 9b2438f6d1eca098850abc691b42dcc1695f2280 (diff) | |
download | bcm5719-llvm-e12a536d76219019af68a8a401764dc082e736e8.tar.gz bcm5719-llvm-e12a536d76219019af68a8a401764dc082e736e8.zip |
Implement more of P0006; Type Traits Variable Templates.
llvm-svn: 254283
Diffstat (limited to 'libcxx/test/std')
6 files changed, 68 insertions, 2 deletions
diff --git a/libcxx/test/std/utilities/meta/meta.rel/is_base_of.pass.cpp b/libcxx/test/std/utilities/meta/meta.rel/is_base_of.pass.cpp index 0f90ae5c1ca..290c104226b 100644 --- a/libcxx/test/std/utilities/meta/meta.rel/is_base_of.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.rel/is_base_of.pass.cpp @@ -13,6 +13,8 @@ #include <type_traits> +#include "test_macros.h" + template <class T, class U> void test_is_base_of() { @@ -20,6 +22,12 @@ void test_is_base_of() static_assert((std::is_base_of<const T, U>::value), ""); static_assert((std::is_base_of<T, const U>::value), ""); static_assert((std::is_base_of<const T, const U>::value), ""); +#if TEST_STD_VERS > 14 + static_assert((std::is_base_of_v<T, U>), ""); + static_assert((std::is_base_of_v<const T, U>), ""); + static_assert((std::is_base_of_v<T, const U>), ""); + static_assert((std::is_base_of_v<const T, const U>), ""); +#endif } template <class T, class U> diff --git a/libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp b/libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp index 429fb33037f..bc3c55a33d3 100644 --- a/libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp @@ -13,6 +13,8 @@ #include <type_traits> +#include "test_macros.h" + template <class T, class U> void test_is_convertible() { @@ -20,6 +22,12 @@ void test_is_convertible() static_assert((std::is_convertible<const T, U>::value), ""); static_assert((std::is_convertible<T, const U>::value), ""); static_assert((std::is_convertible<const T, const U>::value), ""); +#if TEST_STD_VERS > 14 + static_assert((std::is_convertible_v<T, U>), ""); + static_assert((std::is_convertible_v<const T, U>), ""); + static_assert((std::is_convertible_v<T, const U>), ""); + static_assert((std::is_convertible_v<const T, const U>), ""); +#endif } template <class T, class U> @@ -29,6 +37,12 @@ void test_is_not_convertible() static_assert((!std::is_convertible<const T, U>::value), ""); static_assert((!std::is_convertible<T, const U>::value), ""); static_assert((!std::is_convertible<const T, const U>::value), ""); +#if TEST_STD_VERS > 14 + static_assert((!std::is_convertible_v<T, U>), ""); + static_assert((!std::is_convertible_v<const T, U>), ""); + static_assert((!std::is_convertible_v<T, const U>), ""); + static_assert((!std::is_convertible_v<const T, const U>), ""); +#endif } typedef void Function(); diff --git a/libcxx/test/std/utilities/meta/meta.rel/is_same.pass.cpp b/libcxx/test/std/utilities/meta/meta.rel/is_same.pass.cpp index 7250d6ca773..439c96f656e 100644 --- a/libcxx/test/std/utilities/meta/meta.rel/is_same.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.rel/is_same.pass.cpp @@ -13,13 +13,21 @@ #include <type_traits> +#include "test_macros.h" + template <class T, class U> void test_is_same() { - static_assert((std::is_same<T, U>::value), ""); + static_assert(( std::is_same<T, U>::value), ""); static_assert((!std::is_same<const T, U>::value), ""); static_assert((!std::is_same<T, const U>::value), ""); - static_assert((std::is_same<const T, const U>::value), ""); + static_assert(( std::is_same<const T, const U>::value), ""); +#if TEST_STD_VERS > 14 + static_assert(( std::is_same_v<T, U>), ""); + static_assert((!std::is_same_v<const T, U>), ""); + static_assert((!std::is_same_v<T, const U>), ""); + static_assert(( std::is_same_v<const T, const U>), ""); +#endif } template <class T, class U> @@ -29,6 +37,12 @@ void test_is_same_ref() static_assert((std::is_same<const T, U>::value), ""); static_assert((std::is_same<T, const U>::value), ""); static_assert((std::is_same<const T, const U>::value), ""); +#if TEST_STD_VERS > 14 + static_assert((std::is_same_v<T, U>), ""); + static_assert((std::is_same_v<const T, U>), ""); + static_assert((std::is_same_v<T, const U>), ""); + static_assert((std::is_same_v<const T, const U>), ""); +#endif } template <class T, class U> diff --git a/libcxx/test/std/utilities/meta/meta.unary.prop.query/alignment_of.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary.prop.query/alignment_of.pass.cpp index 6ea1cac789e..cfbf256659a 100644 --- a/libcxx/test/std/utilities/meta/meta.unary.prop.query/alignment_of.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary.prop.query/alignment_of.pass.cpp @@ -14,6 +14,8 @@ #include <type_traits> #include <cstdint> +#include "test_macros.h" + template <class T, unsigned A> void test_alignment_of() { @@ -21,6 +23,12 @@ void test_alignment_of() static_assert( std::alignment_of<const T>::value == A, ""); static_assert( std::alignment_of<volatile T>::value == A, ""); static_assert( std::alignment_of<const volatile T>::value == A, ""); +#if TEST_STD_VERS > 14 + static_assert( std::alignment_of_v<T> == A, ""); + static_assert( std::alignment_of_v<const T> == A, ""); + static_assert( std::alignment_of_v<volatile T> == A, ""); + static_assert( std::alignment_of_v<const volatile T> == A, ""); +#endif } class Class diff --git a/libcxx/test/std/utilities/meta/meta.unary.prop.query/extent.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary.prop.query/extent.pass.cpp index a99dc694852..34041f95f74 100644 --- a/libcxx/test/std/utilities/meta/meta.unary.prop.query/extent.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary.prop.query/extent.pass.cpp @@ -13,6 +13,8 @@ #include <type_traits> +#include "test_macros.h" + template <class T, unsigned A> void test_extent() { @@ -20,6 +22,12 @@ void test_extent() static_assert((std::extent<const T>::value == A), ""); static_assert((std::extent<volatile T>::value == A), ""); static_assert((std::extent<const volatile T>::value == A), ""); +#if TEST_STD_VERS > 14 + static_assert((std::extent_v<T> == A), ""); + static_assert((std::extent_v<const T> == A), ""); + static_assert((std::extent_v<volatile T> == A), ""); + static_assert((std::extent_v<const volatile T> == A), ""); +#endif } template <class T, unsigned A> @@ -29,6 +37,12 @@ void test_extent1() static_assert((std::extent<const T, 1>::value == A), ""); static_assert((std::extent<volatile T, 1>::value == A), ""); static_assert((std::extent<const volatile T, 1>::value == A), ""); +#if TEST_STD_VERS > 14 + static_assert((std::extent_v<T, 1> == A), ""); + static_assert((std::extent_v<const T, 1> == A), ""); + static_assert((std::extent_v<volatile T, 1> == A), ""); + static_assert((std::extent_v<const volatile T, 1> == A), ""); +#endif } class Class diff --git a/libcxx/test/std/utilities/meta/meta.unary.prop.query/rank.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary.prop.query/rank.pass.cpp index 06f66a92c7c..58343a0c3a9 100644 --- a/libcxx/test/std/utilities/meta/meta.unary.prop.query/rank.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary.prop.query/rank.pass.cpp @@ -13,6 +13,8 @@ #include <type_traits> +#include "test_macros.h" + template <class T, unsigned A> void test_rank() { @@ -20,6 +22,12 @@ void test_rank() static_assert( std::rank<const T>::value == A, ""); static_assert( std::rank<volatile T>::value == A, ""); static_assert( std::rank<const volatile T>::value == A, ""); +#if TEST_STD_VERS > 14 + static_assert( std::rank_v<T> == A, ""); + static_assert( std::rank_v<const T> == A, ""); + static_assert( std::rank_v<volatile T> == A, ""); + static_assert( std::rank_v<const volatile T> == A, ""); +#endif } class Class |