brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · e4e5af0 Raw
79 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <chrono>10 11// duration12 13// template <class Rep1, class Period1, class Rep2, class Period2>14//   constexpr15//   typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type16//   operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);17 18#include <chrono>19#include <cassert>20#include <ratio>21 22#include "test_macros.h"23 24int main(int, char**)25{26    {27    std::chrono::seconds s1(3);28    std::chrono::seconds s2(5);29    std::chrono::seconds r = s1 - s2;30    assert(r.count() == -2);31    }32    {33    std::chrono::seconds s1(3);34    std::chrono::microseconds s2(5);35    std::chrono::microseconds r = s1 - s2;36    assert(r.count() == 2999995);37    }38    {39    std::chrono::duration<int, std::ratio<2, 3> > s1(3);40    std::chrono::duration<int, std::ratio<3, 5> > s2(5);41    std::chrono::duration<int, std::ratio<1, 15> > r = s1 - s2;42    assert(r.count() == -15);43    }44    {45    std::chrono::duration<int, std::ratio<2, 3> > s1(3);46    std::chrono::duration<double, std::ratio<3, 5> > s2(5);47    std::chrono::duration<double, std::ratio<1, 15> > r = s1 - s2;48    assert(r.count() == -15);49    }50#if TEST_STD_VER >= 1151    {52    constexpr std::chrono::seconds s1(3);53    constexpr std::chrono::seconds s2(5);54    constexpr std::chrono::seconds r = s1 - s2;55    static_assert(r.count() == -2, "");56    }57    {58    constexpr std::chrono::seconds s1(3);59    constexpr std::chrono::microseconds s2(5);60    constexpr std::chrono::microseconds r = s1 - s2;61    static_assert(r.count() == 2999995, "");62    }63    {64    constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(3);65    constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(5);66    constexpr std::chrono::duration<int, std::ratio<1, 15> > r = s1 - s2;67    static_assert(r.count() == -15, "");68    }69    {70    constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(3);71    constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(5);72    constexpr std::chrono::duration<double, std::ratio<1, 15> > r = s1 - s2;73    static_assert(r.count() == -15, "");74    }75#endif76 77  return 0;78}79