op_mod_duration.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
1ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen//===----------------------------------------------------------------------===//
2ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen//
3ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen// ��������������������The LLVM Compiler Infrastructure
4ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen//
5ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen// This file is distributed under the University of Illinois Open Source
6ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen// License. See LICENSE.TXT for details.
7ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen//
8ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen//===----------------------------------------------------------------------===//
9ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
10ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen// <chrono>
11ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
12ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen// duration
13ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
14ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen// template <class Rep1, class Period1, class Rep2, class Period2>
15ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen//   typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type
16ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen//   operator%(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
17ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
18ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen#include <chrono>
19ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen#include <cassert>
20ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen
21ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazenint main()
22ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen{
23ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    {
24ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    std::chrono::nanoseconds ns1(15);
25ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    std::chrono::nanoseconds ns2(6);
26ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    std::chrono::nanoseconds r = ns1 % ns2;
27ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    assert(r.count() == 3);
28ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    }
29ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    {
30ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    std::chrono::microseconds us1(15);
31ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    std::chrono::nanoseconds ns2(28);
32ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    std::chrono::nanoseconds r = us1 % ns2;
33ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    assert(r.count() == 20);
34ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    }
35ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    {
36ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    std::chrono::duration<int, std::ratio<3, 5> > s1(6);
37ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    std::chrono::duration<int, std::ratio<2, 3> > s2(3);
38ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    std::chrono::duration<int, std::ratio<1, 15> > r = s1 % s2;
39ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    assert(r.count() == 24);
40ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen    }
41ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen}
42ce16e4276c2f61109a23b3f6707cfcd87b07c735Griff Hazen