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 // template <class Rep1, class Period1, class Rep2, class Period2>
15 // constexpr
16 // typename common_type<Rep1, Rep2>::type
17 // operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
18
19 #include <chrono>
20 #include <cassert>
21
main()22 int main()
23 {
24 {
25 std::chrono::nanoseconds ns1(15);
26 std::chrono::nanoseconds ns2(5);
27 assert(ns1 / ns2 == 3);
28 }
29 {
30 std::chrono::microseconds us1(15);
31 std::chrono::nanoseconds ns2(5);
32 assert(us1 / ns2 == 3000);
33 }
34 {
35 std::chrono::duration<int, std::ratio<2, 3> > s1(30);
36 std::chrono::duration<int, std::ratio<3, 5> > s2(5);
37 assert(s1 / s2 == 6);
38 }
39 {
40 std::chrono::duration<int, std::ratio<2, 3> > s1(30);
41 std::chrono::duration<double, std::ratio<3, 5> > s2(5);
42 assert(s1 / s2 == 20./3);
43 }
44 #ifndef _LIBCPP_HAS_NO_CONSTEXPR
45 {
46 constexpr std::chrono::nanoseconds ns1(15);
47 constexpr std::chrono::nanoseconds ns2(5);
48 static_assert(ns1 / ns2 == 3, "");
49 }
50 {
51 constexpr std::chrono::microseconds us1(15);
52 constexpr std::chrono::nanoseconds ns2(5);
53 static_assert(us1 / ns2 == 3000, "");
54 }
55 {
56 constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(30);
57 constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(5);
58 static_assert(s1 / s2 == 6, "");
59 }
60 {
61 constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(30);
62 constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(5);
63 static_assert(s1 / s2 == 20./3, "");
64 }
65 #endif
66 }
67