diff options
Diffstat (limited to 'test/std/utilities')
46 files changed, 201 insertions, 67 deletions
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp index fc346d4dce7d..78b04d8615b3 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.hash/hash_unique_ptr.pass.cpp @@ -50,7 +50,7 @@ namespace std { template <class T> struct hash<::min_pointer<T, std::integral_constant<size_t, 1>>> { - size_t operator()(::min_pointer<T, std::integral_constant<size_t, 1>> p) const noexcept(false) { + size_t operator()(::min_pointer<T, std::integral_constant<size_t, 1>> p) const TEST_NOEXCEPT_FALSE { if (!p) return 0; return std::hash<T*>{}(std::addressof(*p)); } @@ -67,12 +67,16 @@ int main() int* ptr = new int; std::unique_ptr<int> p(ptr); std::hash<std::unique_ptr<int> > f; - ASSERT_NOT_NOEXCEPT(f(p)); std::size_t h = f(p); assert(h == std::hash<int*>()(ptr)); } #if TEST_STD_VER >= 11 { + std::unique_ptr<int, PointerDeleter<int, 1>> pThrowingHash; + std::hash<std::unique_ptr<int, PointerDeleter<int, 1>>> fThrowingHash; + ASSERT_NOT_NOEXCEPT(fThrowingHash(pThrowingHash)); + } + { test_enabled_with_deleter<int, Deleter<int>>(); test_enabled_with_deleter<int[], Deleter<int[]>>(); test_enabled_with_deleter<int, CopyDeleter<int>>(); diff --git a/test/std/utilities/meta/meta.help/integral_constant.pass.cpp b/test/std/utilities/meta/meta.help/integral_constant.pass.cpp index 51a837e4e032..bf8aa0453e97 100644 --- a/test/std/utilities/meta/meta.help/integral_constant.pass.cpp +++ b/test/std/utilities/meta/meta.help/integral_constant.pass.cpp @@ -22,11 +22,11 @@ int main() static_assert(_5::value == 5, ""); static_assert((std::is_same<_5::value_type, int>::value), ""); static_assert((std::is_same<_5::type, _5>::value), ""); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 static_assert((_5() == 5), ""); -#else - assert(_5() == 5); #endif + assert(_5() == 5); + #if TEST_STD_VER > 11 static_assert ( _5{}() == 5, "" ); diff --git a/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp b/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp index 43f23f5ccc80..883548270469 100644 --- a/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp +++ b/test/std/utilities/meta/meta.trans/meta.trans.other/aligned_union.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: c++98, c++03 + // type_traits // aligned_union<size_t Len, class ...Types> @@ -17,7 +19,6 @@ int main() { -#ifndef _LIBCPP_HAS_NO_VARIADICS { typedef std::aligned_union<10, char >::type T1; #if TEST_STD_VER > 11 @@ -90,5 +91,4 @@ int main() static_assert(std::alignment_of<T1>::value == 4, ""); static_assert(sizeof(T1) == 4, ""); } -#endif } diff --git a/test/std/utilities/optional/optional.comp_with_t/equal.pass.cpp b/test/std/utilities/optional/optional.comp_with_t/equal.pass.cpp index 29fb7a8431f1..dc69739271b5 100644 --- a/test/std/utilities/optional/optional.comp_with_t/equal.pass.cpp +++ b/test/std/utilities/optional/optional.comp_with_t/equal.pass.cpp @@ -10,8 +10,8 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator==(const optional<T>& x, const T& v); -// template <class T> constexpr bool operator==(const T& v, const optional<T>& x); +// template <class T, class U> constexpr bool operator==(const optional<T>& x, const U& v); +// template <class T, class U> constexpr bool operator==(const U& v, const optional<T>& x); #include <optional> diff --git a/test/std/utilities/optional/optional.comp_with_t/greater.pass.cpp b/test/std/utilities/optional/optional.comp_with_t/greater.pass.cpp index ae34eb20517e..e1bad12e3f69 100644 --- a/test/std/utilities/optional/optional.comp_with_t/greater.pass.cpp +++ b/test/std/utilities/optional/optional.comp_with_t/greater.pass.cpp @@ -10,8 +10,8 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator>(const optional<T>& x, const T& v); -// template <class T> constexpr bool operator>(const T& v, const optional<T>& x); +// template <class T, class U> constexpr bool operator>(const optional<T>& x, const U& v); +// template <class T, class U> constexpr bool operator>(const U& v, const optional<T>& x); #include <optional> diff --git a/test/std/utilities/optional/optional.comp_with_t/greater_equal.pass.cpp b/test/std/utilities/optional/optional.comp_with_t/greater_equal.pass.cpp index dac94002661f..342ddffc2c79 100644 --- a/test/std/utilities/optional/optional.comp_with_t/greater_equal.pass.cpp +++ b/test/std/utilities/optional/optional.comp_with_t/greater_equal.pass.cpp @@ -10,8 +10,8 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator>=(const optional<T>& x, const T& v); -// template <class T> constexpr bool operator>=(const T& v, const optional<T>& x); +// template <class T, class U> constexpr bool operator>=(const optional<T>& x, const U& v); +// template <class T, class U> constexpr bool operator>=(const U& v, const optional<T>& x); #include <optional> diff --git a/test/std/utilities/optional/optional.comp_with_t/less_equal.pass.cpp b/test/std/utilities/optional/optional.comp_with_t/less_equal.pass.cpp index b71f8363b0a6..bcf6afcc6bfb 100644 --- a/test/std/utilities/optional/optional.comp_with_t/less_equal.pass.cpp +++ b/test/std/utilities/optional/optional.comp_with_t/less_equal.pass.cpp @@ -10,8 +10,8 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator<=(const optional<T>& x, const T& v); -// template <class T> constexpr bool operator<=(const T& v, const optional<T>& x); +// template <class T, class U> constexpr bool operator<=(const optional<T>& x, const U& v); +// template <class T, class U> constexpr bool operator<=(const U& v, const optional<T>& x); #include <optional> diff --git a/test/std/utilities/optional/optional.comp_with_t/less_than.pass.cpp b/test/std/utilities/optional/optional.comp_with_t/less_than.pass.cpp index 84456b3baa6e..3d5e2144a967 100644 --- a/test/std/utilities/optional/optional.comp_with_t/less_than.pass.cpp +++ b/test/std/utilities/optional/optional.comp_with_t/less_than.pass.cpp @@ -10,8 +10,8 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator<(const optional<T>& x, const T& v); -// template <class T> constexpr bool operator<(const T& v, const optional<T>& x); +// template <class T, class U> constexpr bool operator<(const optional<T>& x, const U& v); +// template <class T, class U> constexpr bool operator<(const U& v, const optional<T>& x); #include <optional> diff --git a/test/std/utilities/optional/optional.comp_with_t/not_equal.pass.cpp b/test/std/utilities/optional/optional.comp_with_t/not_equal.pass.cpp index a4ffdc25e721..7da9b7ba7a03 100644 --- a/test/std/utilities/optional/optional.comp_with_t/not_equal.pass.cpp +++ b/test/std/utilities/optional/optional.comp_with_t/not_equal.pass.cpp @@ -10,8 +10,8 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator!=(const optional<T>& x, const T& v); -// template <class T> constexpr bool operator!=(const T& v, const optional<T>& x); +// template <class T, class U> constexpr bool operator!=(const optional<T>& x, const U& v); +// template <class T, class U> constexpr bool operator!=(const U& v, const optional<T>& x); #include <optional> diff --git a/test/std/utilities/optional/optional.hash/hash.pass.cpp b/test/std/utilities/optional/optional.hash/hash.pass.cpp index 8c91d6da761e..b4a1832cdc0a 100644 --- a/test/std/utilities/optional/optional.hash/hash.pass.cpp +++ b/test/std/utilities/optional/optional.hash/hash.pass.cpp @@ -26,7 +26,7 @@ namespace std { template <> struct hash<B> { - size_t operator()(B const&) noexcept(false) { return 0; } + size_t operator()(B const&) TEST_NOEXCEPT_FALSE { return 0; } }; } @@ -37,10 +37,16 @@ int main() const std::size_t nullopt_hash = std::hash<optional<double>>{}(optional<double>{}); + + { + optional<B> opt; + ASSERT_NOT_NOEXCEPT(std::hash<optional<B>>()(opt)); + ASSERT_NOT_NOEXCEPT(std::hash<optional<const B>>()(opt)); + } + { typedef int T; optional<T> opt; - ASSERT_NOT_NOEXCEPT(std::hash<optional<T>>()(opt)); assert(std::hash<optional<T>>{}(opt) == nullopt_hash); opt = 2; assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt)); @@ -48,7 +54,6 @@ int main() { typedef std::string T; optional<T> opt; - ASSERT_NOT_NOEXCEPT(std::hash<optional<T>>()(opt)); assert(std::hash<optional<T>>{}(opt) == nullopt_hash); opt = std::string("123"); assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt)); @@ -56,7 +61,6 @@ int main() { typedef std::unique_ptr<int> T; optional<T> opt; - ASSERT_NOT_NOEXCEPT(std::hash<optional<T>>()(opt)); assert(std::hash<optional<T>>{}(opt) == nullopt_hash); opt = std::unique_ptr<int>(new int(3)); assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt)); diff --git a/test/std/utilities/optional/optional.relops/equal.pass.cpp b/test/std/utilities/optional/optional.relops/equal.pass.cpp index 7667540f9760..0752841d3668 100644 --- a/test/std/utilities/optional/optional.relops/equal.pass.cpp +++ b/test/std/utilities/optional/optional.relops/equal.pass.cpp @@ -10,7 +10,7 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator==(const optional<T>& x, const optional<T>& y); +// template <class T, class U> constexpr bool operator==(const optional<T>& x, const optional<U>& y); #include <optional> #include <type_traits> diff --git a/test/std/utilities/optional/optional.relops/greater_equal.pass.cpp b/test/std/utilities/optional/optional.relops/greater_equal.pass.cpp index 0e05834c147a..f475f3796916 100644 --- a/test/std/utilities/optional/optional.relops/greater_equal.pass.cpp +++ b/test/std/utilities/optional/optional.relops/greater_equal.pass.cpp @@ -10,7 +10,7 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator>= (const optional<T>& x, const optional<T>& y); +// template <class T, class U> constexpr bool operator>= (const optional<T>& x, const optional<U>& y); #include <optional> diff --git a/test/std/utilities/optional/optional.relops/greater_than.pass.cpp b/test/std/utilities/optional/optional.relops/greater_than.pass.cpp index 3946a6102ba9..c3f2af9323ab 100644 --- a/test/std/utilities/optional/optional.relops/greater_than.pass.cpp +++ b/test/std/utilities/optional/optional.relops/greater_than.pass.cpp @@ -10,7 +10,7 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator> (const optional<T>& x, const optional<T>& y); +// template <class T, class U> constexpr bool operator> (const optional<T>& x, const optional<U>& y); #include <optional> diff --git a/test/std/utilities/optional/optional.relops/less_equal.pass.cpp b/test/std/utilities/optional/optional.relops/less_equal.pass.cpp index 5a1954154f44..35e80d3d4e50 100644 --- a/test/std/utilities/optional/optional.relops/less_equal.pass.cpp +++ b/test/std/utilities/optional/optional.relops/less_equal.pass.cpp @@ -10,7 +10,7 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator<= (const optional<T>& x, const optional<T>& y); +// template <class T, class U> constexpr bool operator<= (const optional<T>& x, const optional<U>& y); #include <optional> diff --git a/test/std/utilities/optional/optional.relops/less_than.pass.cpp b/test/std/utilities/optional/optional.relops/less_than.pass.cpp index 35956e6f4a70..1dbffbd92352 100644 --- a/test/std/utilities/optional/optional.relops/less_than.pass.cpp +++ b/test/std/utilities/optional/optional.relops/less_than.pass.cpp @@ -10,7 +10,7 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator< (const optional<T>& x, const optional<T>& y); +// template <class T, class U> constexpr bool operator< (const optional<T>& x, const optional<U>& y); #include <optional> diff --git a/test/std/utilities/optional/optional.relops/not_equal.pass.cpp b/test/std/utilities/optional/optional.relops/not_equal.pass.cpp index 1256537d6a86..12d9922a9592 100644 --- a/test/std/utilities/optional/optional.relops/not_equal.pass.cpp +++ b/test/std/utilities/optional/optional.relops/not_equal.pass.cpp @@ -10,7 +10,7 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// template <class T> constexpr bool operator!=(const optional<T>& x, const optional<T>& y); +// template <class T, class U> constexpr bool operator!=(const optional<T>& x, const optional<U>& y); #include <optional> #include <type_traits> diff --git a/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move_convert.runtime.pass.cpp b/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move_convert.runtime.pass.cpp index 9b946a733fea..716a2b92a96c 100644 --- a/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move_convert.runtime.pass.cpp +++ b/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.asgn/move_convert.runtime.pass.cpp @@ -78,14 +78,11 @@ void test_sfinae() { using DA = NCConvertingDeleter<A[]>; // non-copyable deleters using DAC = NCConvertingDeleter<const A[]>; // non-copyable deleters - using DB = NCConvertingDeleter<B[]>; using UA = std::unique_ptr<A[]>; using UAC = std::unique_ptr<const A[]>; - using UB = std::unique_ptr<B[]>; using UAD = std::unique_ptr<A[], DA>; using UACD = std::unique_ptr<const A[], DAC>; - using UBD = std::unique_ptr<B[], DB>; { // cannot move from an lvalue static_assert(std::is_assignable<UAC, UA&&>::value, ""); static_assert(!std::is_assignable<UAC, UA&>::value, ""); diff --git a/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.ctor/default.pass.cpp b/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.ctor/default.pass.cpp index 51d9aa708c40..2a7949f6420a 100644 --- a/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.ctor/default.pass.cpp +++ b/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.ctor/default.pass.cpp @@ -46,7 +46,7 @@ struct NonDefaultDeleter { template <class ElemType> void test_sfinae() { #if TEST_STD_VER >= 11 - { // the constructor does not participate in overload resultion when + { // the constructor does not participate in overload resolution when // the deleter is a pointer type using U = std::unique_ptr<ElemType, void (*)(void*)>; static_assert(!std::is_default_constructible<U>::value, ""); diff --git a/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.ctor/move_convert.pass.cpp b/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.ctor/move_convert.pass.cpp index 6e5db86c97fc..769deea92c85 100644 --- a/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.ctor/move_convert.pass.cpp +++ b/test/std/utilities/smartptr/unique.ptr/unique.ptr.class/unique.ptr.ctor/move_convert.pass.cpp @@ -19,6 +19,7 @@ #include <cassert> #include "test_macros.h" +#include "type_id.h" #include "unique_ptr_test_helper.h" template <int ID = 0> @@ -33,9 +34,71 @@ struct GenericConvertingDeleter { void operator()(void*) const {} }; +template <class Templ, class Other> +struct is_specialization; + +template <template <int> class Templ, int ID1, class Other> +struct is_specialization<Templ<ID1>, Other> : std::false_type {}; + +template <template <int> class Templ, int ID1, int ID2> +struct is_specialization<Templ<ID1>, Templ<ID2> > : std::true_type {}; + +template <class Templ, class Other> +using EnableIfSpecialization = typename std::enable_if< + is_specialization<Templ, typename std::decay<Other>::type >::value + >::type; + + +template <int ID> +struct TrackingDeleter { + TrackingDeleter() : arg_type(&makeArgumentID<>()) {} + + TrackingDeleter(TrackingDeleter const&) + : arg_type(&makeArgumentID<TrackingDeleter const&>()) {} + + TrackingDeleter(TrackingDeleter&&) + : arg_type(&makeArgumentID<TrackingDeleter &&>()) {} + + template <class T, class = EnableIfSpecialization<TrackingDeleter, T> > + TrackingDeleter(T&&) : arg_type(&makeArgumentID<T&&>()) {} + + TrackingDeleter& operator=(TrackingDeleter const&) { + arg_type = &makeArgumentID<TrackingDeleter const&>(); + return *this; + } + + TrackingDeleter& operator=(TrackingDeleter &&) { + arg_type = &makeArgumentID<TrackingDeleter &&>(); + return *this; + } + + template <class T, class = EnableIfSpecialization<TrackingDeleter, T> > + TrackingDeleter& operator=(T&&) { + arg_type = &makeArgumentID<T&&>(); + return *this; + } + + void operator()(void*) const {} + +public: + TypeID const* reset() const { + TypeID const* tmp = arg_type; + arg_type = nullptr; + return tmp; + } + + mutable TypeID const* arg_type; +}; + + +template <class ExpectT, int ID> +bool checkArg(TrackingDeleter<ID> const& d) { + return d.arg_type && *d.arg_type == makeArgumentID<ExpectT>(); +} + + template <bool IsArray> void test_sfinae() { -#if TEST_STD_VER >= 11 typedef typename std::conditional<IsArray, A[], A>::type VT; { // Test that different non-reference deleter types are allowed so long @@ -80,13 +143,11 @@ void test_sfinae() { static_assert(std::is_constructible<U1, U5&&>::value, ""); static_assert(std::is_constructible<U1, U6&&>::value, ""); } -#endif } template <bool IsArray> void test_noexcept() { -#if TEST_STD_VER >= 11 typedef typename std::conditional<IsArray, A[], A>::type VT; { typedef std::unique_ptr<const VT> APtr; @@ -108,7 +169,39 @@ void test_noexcept() { typedef std::unique_ptr<VT, const NCConstDeleter<const VT>&> BPtr; static_assert(std::is_nothrow_constructible<APtr, BPtr>::value, ""); } -#endif +} + + +template <bool IsArray> +void test_deleter_value_category() { + typedef typename std::conditional<IsArray, A[], A>::type VT; + using TD1 = TrackingDeleter<1>; + using TD2 = TrackingDeleter<2>; + TD1 d1; + TD2 d2; + + { // Test non-reference deleter conversions + using U1 = std::unique_ptr<VT, TD1 >; + using U2 = std::unique_ptr<VT, TD2 >; + U2 u2; + u2.get_deleter().reset(); + U1 u1(std::move(u2)); + assert(checkArg<TD2&&>(u1.get_deleter())); + } + { // Test assignment from non-const ref + using U1 = std::unique_ptr<VT, TD1 >; + using U2 = std::unique_ptr<VT, TD2& >; + U2 u2(nullptr, d2); + U1 u1(std::move(u2)); + assert(checkArg<TD2&>(u1.get_deleter())); + } + { // Test assignment from const ref + using U1 = std::unique_ptr<VT, TD1 >; + using U2 = std::unique_ptr<VT, TD2 const& >; + U2 u2(nullptr, d2); + U1 u1(std::move(u2)); + assert(checkArg<TD2 const&>(u1.get_deleter())); + } } @@ -116,9 +209,11 @@ int main() { { test_sfinae</*IsArray*/false>(); test_noexcept<false>(); + test_deleter_value_category<false>(); } { test_sfinae</*IsArray*/true>(); test_noexcept<true>(); + test_deleter_value_category<true>(); } } diff --git a/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp b/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp index b85f039526a4..37753bcad0d1 100644 --- a/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp @@ -16,7 +16,7 @@ #include <chrono> #include <cassert> -#include <test_macros.h> +#include "test_macros.h" int main() { diff --git a/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp b/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp index 347cc1980e81..f932eb51c0d5 100644 --- a/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp @@ -16,7 +16,7 @@ #include <chrono> #include <cassert> -#include <test_macros.h> +#include "test_macros.h" int main() { diff --git a/test/std/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp b/test/std/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp index 1c87fcd909ef..9ecdfc750ab0 100644 --- a/test/std/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp @@ -20,6 +20,8 @@ #include <type_traits> #include <cassert> +#include "test_macros.h" + template <class ToDuration, class FromDuration> void test(const FromDuration& f, const ToDuration& d) @@ -43,7 +45,7 @@ int main() std::chrono::duration<double, std::ratio<3600> >(7265./3600)); test(std::chrono::duration<int, std::ratio<2, 3> >(9), std::chrono::duration<int, std::ratio<3, 5> >(10)); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::hours h = std::chrono::duration_cast<std::chrono::hours>(std::chrono::milliseconds(7265000)); static_assert(h.count() == 2, ""); diff --git a/test/std/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp b/test/std/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp index 2d0dd94d4cf6..5adc62ff1c5f 100644 --- a/test/std/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp @@ -24,6 +24,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -68,7 +70,7 @@ int main() assert(s1 == s2); assert(!(s1 != s2)); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::seconds s1(3); constexpr std::chrono::seconds s2(3); diff --git a/test/std/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp b/test/std/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp index 9d875579f326..42e798254208 100644 --- a/test/std/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp @@ -34,6 +34,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -92,7 +94,7 @@ int main() assert( (s1 <= s2)); assert( (s1 >= s2)); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::seconds s1(3); constexpr std::chrono::seconds s2(3); diff --git a/test/std/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp b/test/std/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp index 152227d82a82..c237fd7716f3 100644 --- a/test/std/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp @@ -19,6 +19,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -26,7 +28,7 @@ int main() std::chrono::microseconds us = ms; assert(us.count() == 1000); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::milliseconds ms(1); constexpr std::chrono::microseconds us = ms; diff --git a/test/std/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp b/test/std/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp index 519b2b141c29..4b5042df2ce2 100644 --- a/test/std/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp @@ -19,6 +19,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -26,7 +28,7 @@ int main() std::chrono::duration<double, std::milli> ms = us; assert(ms.count() == 1./1000); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::duration<double, std::micro> us(1); constexpr std::chrono::duration<double, std::milli> ms = us; diff --git a/test/std/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp b/test/std/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp index 59fefe2e002d..8e5938b9e4b3 100644 --- a/test/std/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp @@ -19,6 +19,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -26,7 +28,7 @@ int main() std::chrono::duration<double, std::milli> d = i; assert(d.count() == 3000); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::duration<int> i(3); constexpr std::chrono::duration<double, std::milli> d = i; diff --git a/test/std/utilities/time/time.duration/time.duration.cons/default.pass.cpp b/test/std/utilities/time/time.duration/time.duration.cons/default.pass.cpp index c52990961c25..4f7d67bb630c 100644 --- a/test/std/utilities/time/time.duration/time.duration.cons/default.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.cons/default.pass.cpp @@ -18,6 +18,7 @@ #include <chrono> #include <cassert> +#include "test_macros.h" #include "../../rep.h" template <class D> @@ -26,7 +27,7 @@ test() { D d; assert(d.count() == typename D::rep()); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 constexpr D d2 = D(); static_assert(d2.count() == typename D::rep(), ""); #endif diff --git a/test/std/utilities/time/time.duration/time.duration.cons/rep.pass.cpp b/test/std/utilities/time/time.duration/time.duration.cons/rep.pass.cpp index 20f81619bd12..6ad743e714c2 100644 --- a/test/std/utilities/time/time.duration/time.duration.cons/rep.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.cons/rep.pass.cpp @@ -17,6 +17,7 @@ #include <chrono> #include <cassert> +#include "test_macros.h" #include "../../rep.h" template <class D, class R> @@ -25,7 +26,7 @@ test(R r) { D d(r); assert(d.count() == r); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 constexpr D d2(R(2)); static_assert(d2.count() == 2, ""); #endif diff --git a/test/std/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp b/test/std/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp index b3ba9f7081e4..ae745a76f431 100644 --- a/test/std/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp @@ -19,11 +19,13 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { std::chrono::duration<double> d(5); assert(d.count() == 5); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 constexpr std::chrono::duration<double> d2(5); static_assert(d2.count() == 5, ""); #endif diff --git a/test/std/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp b/test/std/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp index 6585351cb4c8..6859ffcb208a 100644 --- a/test/std/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp @@ -18,6 +18,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -44,7 +46,7 @@ int main() std::chrono::duration<double, std::ratio<1, 15> > r = s1 + s2; assert(r.count() == 75); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::seconds s1(3); constexpr std::chrono::seconds s2(5); diff --git a/test/std/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp b/test/std/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp index fac58b9716d3..4bf26e4288b7 100644 --- a/test/std/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp @@ -19,6 +19,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -45,7 +47,7 @@ int main() std::chrono::duration<double, std::ratio<1, 15> > r = s1 - s2; assert(r.count() == -15); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::seconds s1(3); constexpr std::chrono::seconds s2(5); diff --git a/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp b/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp index 6b24676f100c..561516b66511 100644 --- a/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp @@ -19,6 +19,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -41,7 +43,7 @@ int main() std::chrono::duration<double, std::ratio<3, 5> > s2(5); assert(s1 / s2 == 20./3); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::nanoseconds ns1(15); constexpr std::chrono::nanoseconds ns2(5); diff --git a/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp b/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp index 3036cde5bf67..8b667e84d4d7 100644 --- a/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp @@ -19,6 +19,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -26,7 +28,7 @@ int main() ns = ns / 5; assert(ns.count() == 3); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::nanoseconds ns(15); constexpr std::chrono::nanoseconds ns2 = ns / 5; diff --git a/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp b/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp index e69f3205d14f..441b053dc521 100644 --- a/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp @@ -19,6 +19,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -39,7 +41,7 @@ int main() std::chrono::duration<int, std::ratio<1, 15> > r = s1 % s2; assert(r.count() == 24); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::nanoseconds ns1(15); constexpr std::chrono::nanoseconds ns2(6); diff --git a/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp b/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp index 1acbe34ea5eb..537fae373930 100644 --- a/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp @@ -19,6 +19,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -26,7 +28,7 @@ int main() ns = ns % 6; assert(ns.count() == 3); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::nanoseconds ns(15); constexpr std::chrono::nanoseconds ns2 = ns % 6; diff --git a/test/std/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp b/test/std/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp index 190e74b1dc32..6b8c83732127 100644 --- a/test/std/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp @@ -24,6 +24,8 @@ #include <chrono> #include <cassert> +#include "test_macros.h" + int main() { { @@ -33,7 +35,7 @@ int main() ns = 6 * ns; assert(ns.count() == 90); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { constexpr std::chrono::nanoseconds ns(3); constexpr std::chrono::nanoseconds ns2 = ns * 5; diff --git a/test/std/utilities/time/time.duration/time.duration.special/max.pass.cpp b/test/std/utilities/time/time.duration/time.duration.special/max.pass.cpp index 405461e88ae9..48c3e86e8101 100644 --- a/test/std/utilities/time/time.duration/time.duration.special/max.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.special/max.pass.cpp @@ -17,6 +17,7 @@ #include <limits> #include <cassert> +#include "test_macros.h" #include "../../rep.h" template <class D> @@ -27,7 +28,7 @@ void test() Rep max_rep = std::chrono::duration_values<Rep>::max(); assert(D::max().count() == max_rep); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { typedef typename D::rep Rep; constexpr Rep max_rep = std::chrono::duration_values<Rep>::max(); diff --git a/test/std/utilities/time/time.duration/time.duration.special/min.pass.cpp b/test/std/utilities/time/time.duration/time.duration.special/min.pass.cpp index 44cd64eff3d3..0d94aaa5869c 100644 --- a/test/std/utilities/time/time.duration/time.duration.special/min.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.special/min.pass.cpp @@ -17,6 +17,7 @@ #include <limits> #include <cassert> +#include "test_macros.h" #include "../../rep.h" template <class D> @@ -27,7 +28,7 @@ void test() Rep min_rep = std::chrono::duration_values<Rep>::min(); assert(D::min().count() == min_rep); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { typedef typename D::rep Rep; constexpr Rep min_rep = std::chrono::duration_values<Rep>::min(); diff --git a/test/std/utilities/time/time.duration/time.duration.special/zero.pass.cpp b/test/std/utilities/time/time.duration/time.duration.special/zero.pass.cpp index 18350fe2ff47..7b312c5acb50 100644 --- a/test/std/utilities/time/time.duration/time.duration.special/zero.pass.cpp +++ b/test/std/utilities/time/time.duration/time.duration.special/zero.pass.cpp @@ -16,6 +16,7 @@ #include <chrono> #include <cassert> +#include "test_macros.h" #include "../../rep.h" template <class D> @@ -26,7 +27,7 @@ void test() Rep zero_rep = std::chrono::duration_values<Rep>::zero(); assert(D::zero().count() == zero_rep); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 { typedef typename D::rep Rep; constexpr Rep zero_rep = std::chrono::duration_values<Rep>::zero(); diff --git a/test/std/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp b/test/std/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp index 89dc1dcc1a59..e3754c1f6475 100644 --- a/test/std/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp +++ b/test/std/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp @@ -15,6 +15,7 @@ #include <limits> #include <cassert> +#include "test_macros.h" #include "../../rep.h" int main() @@ -25,7 +26,7 @@ int main() std::numeric_limits<double>::max()); assert(std::chrono::duration_values<Rep>::max() == std::numeric_limits<Rep>::max()); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 static_assert(std::chrono::duration_values<int>::max() == std::numeric_limits<int>::max(), ""); static_assert(std::chrono::duration_values<double>::max() == diff --git a/test/std/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp b/test/std/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp index 69812bba006a..508837375b87 100644 --- a/test/std/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp +++ b/test/std/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp @@ -15,6 +15,7 @@ #include <limits> #include <cassert> +#include "test_macros.h" #include "../../rep.h" int main() @@ -25,7 +26,7 @@ int main() std::numeric_limits<double>::lowest()); assert(std::chrono::duration_values<Rep>::min() == std::numeric_limits<Rep>::lowest()); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 static_assert(std::chrono::duration_values<int>::min() == std::numeric_limits<int>::lowest(), ""); static_assert(std::chrono::duration_values<double>::min() == diff --git a/test/std/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp b/test/std/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp index 234b4bc31c9d..b84a676738a8 100644 --- a/test/std/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp +++ b/test/std/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp @@ -14,13 +14,14 @@ #include <chrono> #include <cassert> +#include "test_macros.h" #include "../../rep.h" int main() { assert(std::chrono::duration_values<int>::zero() == 0); assert(std::chrono::duration_values<Rep>::zero() == 0); -#ifndef _LIBCPP_HAS_NO_CONSTEXPR +#if TEST_STD_VER >= 11 static_assert(std::chrono::duration_values<int>::zero() == 0, ""); static_assert(std::chrono::duration_values<Rep>::zero() == 0, ""); #endif diff --git a/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp b/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp index eeaa8a24ee68..fa2f116f7718 100644 --- a/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp +++ b/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp @@ -86,7 +86,6 @@ int main() static_assert(!noexcept(std::tuple<NoExceptDefault, ThrowingDefault>()), ""); static_assert(!noexcept(std::tuple<ThrowingDefault, ThrowingDefault>()), ""); } -#ifndef _LIBCPP_HAS_NO_CONSTEXPR { constexpr std::tuple<> t; } @@ -106,5 +105,4 @@ int main() IllFormedDefault v(0); std::tuple<IllFormedDefault> t(v); } -#endif } diff --git a/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp b/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp index 90476bcde28c..12968de2dd47 100644 --- a/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp +++ b/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: c++98, c++03 + // <utility> // template <class T1, class T2> struct pair @@ -42,7 +44,6 @@ public: int main() { -#ifndef _LIBCPP_HAS_NO_VARIADICS std::pair<A, B> p(std::piecewise_construct, std::make_tuple(4, 'a'), std::make_tuple(3.5, 6u, 2u)); @@ -51,5 +52,4 @@ int main() assert(p.second.get_d() == 3.5); assert(p.second.get_u1() == 6u); assert(p.second.get_u2() == 2u); -#endif } diff --git a/test/std/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp b/test/std/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp index 42a2666dd04b..c738adad7d79 100644 --- a/test/std/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp +++ b/test/std/utilities/utility/pairs/pairs.pair/piecewise.pass.cpp @@ -7,6 +7,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: c++98, c++03 + // <utility> // template <class T1, class T2> struct pair @@ -21,7 +23,6 @@ int main() { -#ifndef _LIBCPP_HAS_NO_VARIADICS { typedef std::pair<int, int*> P1; typedef std::pair<int*, int> P2; @@ -31,5 +32,4 @@ int main() assert(p3.first == P1(3, nullptr)); assert(p3.second == P2(nullptr, 4)); } -#endif // _LIBCPP_HAS_NO_VARIADICS } |