• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 // <chrono>
11 
12 // duration
13 
14 // constexpr common_type_t<duration> operator-() const;
15 
16 #include <chrono>
17 #include <cassert>
18 
19 #include "test_macros.h"
20 
main()21 int main()
22 {
23     {
24     const std::chrono::minutes m(3);
25     std::chrono::minutes m2 = -m;
26     assert(m2.count() == -m.count());
27     }
28 #if TEST_STD_VER >= 11
29     {
30     constexpr std::chrono::minutes m(3);
31     constexpr std::chrono::minutes m2 = -m;
32     static_assert(m2.count() == -m.count(), "");
33     }
34 #endif
35 
36 // P0548
37     {
38     typedef std::chrono::duration<int, std::ratio<10,10> > D10;
39     typedef std::chrono::duration<int, std::ratio< 1, 1> > D1;
40     D10 zero(0);
41     D10 one(1);
42     static_assert( (std::is_same< decltype(-one), decltype(zero-one) >::value), "");
43     static_assert( (std::is_same< decltype(zero-one), D1>::value), "");
44     static_assert( (std::is_same< decltype(-one),     D1>::value), "");
45     static_assert( (std::is_same< decltype(+one),     D1>::value), "");
46     }
47 }
48