summaryrefslogtreecommitdiff
path: root/test/std/utilities/time/time.duration
diff options
context:
space:
mode:
Diffstat (limited to 'test/std/utilities/time/time.duration')
-rw-r--r--test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp17
-rw-r--r--test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp18
2 files changed, 31 insertions, 4 deletions
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 c0f10147ee893..b85f039526a4b 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
@@ -11,11 +11,13 @@
// duration
-// duration operator+() const;
+// constexpr common_type_t<duration> operator+() const;
#include <chrono>
#include <cassert>
+#include <test_macros.h>
+
int main()
{
{
@@ -23,11 +25,22 @@ int main()
std::chrono::minutes m2 = +m;
assert(m.count() == m2.count());
}
-#ifndef _LIBCPP_HAS_NO_CONSTEXPR
+#if TEST_STD_VER >= 11
{
constexpr std::chrono::minutes m(3);
constexpr std::chrono::minutes m2 = +m;
static_assert(m.count() == m2.count(), "");
}
#endif
+
+// P0548
+ {
+ typedef std::chrono::duration<int, std::ratio<10,10> > D10;
+ typedef std::chrono::duration<int, std::ratio< 1, 1> > D1;
+ D10 zero(0);
+ D10 one(1);
+ static_assert( (std::is_same< decltype(+one), decltype(zero-one) >::value), "");
+ static_assert( (std::is_same< decltype(zero+one), D1>::value), "");
+ static_assert( (std::is_same< decltype(+one), D1>::value), "");
+ }
}
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 00da6f69ca530..347cc1980e819 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
@@ -11,11 +11,13 @@
// duration
-// duration operator-() const;
+// constexpr common_type_t<duration> operator-() const;
#include <chrono>
#include <cassert>
+#include <test_macros.h>
+
int main()
{
{
@@ -23,11 +25,23 @@ int main()
std::chrono::minutes m2 = -m;
assert(m2.count() == -m.count());
}
-#ifndef _LIBCPP_HAS_NO_CONSTEXPR
+#if TEST_STD_VER >= 11
{
constexpr std::chrono::minutes m(3);
constexpr std::chrono::minutes m2 = -m;
static_assert(m2.count() == -m.count(), "");
}
#endif
+
+// P0548
+ {
+ typedef std::chrono::duration<int, std::ratio<10,10> > D10;
+ typedef std::chrono::duration<int, std::ratio< 1, 1> > D1;
+ D10 zero(0);
+ D10 one(1);
+ static_assert( (std::is_same< decltype(-one), decltype(zero-one) >::value), "");
+ static_assert( (std::is_same< decltype(zero-one), D1>::value), "");
+ static_assert( (std::is_same< decltype(-one), D1>::value), "");
+ static_assert( (std::is_same< decltype(+one), D1>::value), "");
+ }
}