summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities/time
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2017-03-21 18:38:57 +0000
committerMarshall Clow <mclow.lists@gmail.com>2017-03-21 18:38:57 +0000
commit9bd9ed4d230c4e488947921044f96db164143309 (patch)
tree6418068d88ae87ce438a2e183e31fcb748d97dd5 /libcxx/test/std/utilities/time
parent0190698dd31c8f1524a5a414075d8b4eff3b1b0e (diff)
downloadbcm5719-llvm-9bd9ed4d230c4e488947921044f96db164143309.tar.gz
bcm5719-llvm-9bd9ed4d230c4e488947921044f96db164143309.zip
Implement P0548: 'common_type and duration' This involves a subtle change in the return type of the unary +/- operators for std::chrono::duration, though I expect that no one will notice.
llvm-svn: 298416
Diffstat (limited to 'libcxx/test/std/utilities/time')
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp6
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp18
2 files changed, 20 insertions, 4 deletions
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp
index c0f10147ee8..e4a22cfadfb 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp
+++ b/libcxx/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,7 +25,7 @@ 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;
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp
index 00da6f69ca5..bc1328c9df5 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp
+++ b/libcxx/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), "");
+ }
}
OpenPOWER on IntegriCloud