brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 269737f Raw
78 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//   typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type15//   operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);16 17#include <chrono>18#include <cassert>19#include <ratio>20 21#include "test_macros.h"22 23int main(int, char**)24{25    {26    std::chrono::seconds s1(3);27    std::chrono::seconds s2(5);28    std::chrono::seconds r = s1 + s2;29    assert(r.count() == 8);30    }31    {32    std::chrono::seconds s1(3);33    std::chrono::microseconds s2(5);34    std::chrono::microseconds r = s1 + s2;35    assert(r.count() == 3000005);36    }37    {38    std::chrono::duration<int, std::ratio<2, 3> > s1(3);39    std::chrono::duration<int, std::ratio<3, 5> > s2(5);40    std::chrono::duration<int, std::ratio<1, 15> > r = s1 + s2;41    assert(r.count() == 75);42    }43    {44    std::chrono::duration<int, std::ratio<2, 3> > s1(3);45    std::chrono::duration<double, std::ratio<3, 5> > s2(5);46    std::chrono::duration<double, std::ratio<1, 15> > r = s1 + s2;47    assert(r.count() == 75);48    }49#if TEST_STD_VER >= 1150    {51    constexpr std::chrono::seconds s1(3);52    constexpr std::chrono::seconds s2(5);53    constexpr std::chrono::seconds r = s1 + s2;54    static_assert(r.count() == 8, "");55    }56    {57    constexpr std::chrono::seconds s1(3);58    constexpr std::chrono::microseconds s2(5);59    constexpr std::chrono::microseconds r = s1 + s2;60    static_assert(r.count() == 3000005, "");61    }62    {63    constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(3);64    constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(5);65    constexpr std::chrono::duration<int, std::ratio<1, 15> > r = s1 + s2;66    static_assert(r.count() == 75, "");67    }68    {69    constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(3);70    constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(5);71    constexpr std::chrono::duration<double, std::ratio<1, 15> > r = s1 + s2;72    static_assert(r.count() == 75, "");73    }74#endif75 76  return 0;77}78