1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// The LLVM Compiler Infrastructure 4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// This file is dual licensed under the MIT and the University of Illinois Open 6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Source Licenses. See LICENSE.TXT for details. 7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// <chrono> 11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// time_point 13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// template <class Clock, class Duration1, class Duration2> 15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// bool 16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// operator< (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); 17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 18b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// template <class Clock, class Duration1, class Duration2> 19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// bool 20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// operator> (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); 21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// template <class Clock, class Duration1, class Duration2> 23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// bool 24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// operator<=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); 25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// template <class Clock, class Duration1, class Duration2> 27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// bool 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// operator>=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <chrono> 31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <cassert> 32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main() 34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::chrono::system_clock Clock; 36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::chrono::milliseconds Duration1; 37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::chrono::microseconds Duration2; 38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::chrono::time_point<Clock, Duration1> T1; 39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef std::chrono::time_point<Clock, Duration2> T2; 40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner T1 t1(Duration1(3)); 43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner T1 t2(Duration1(3)); 44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!(t1 < t2)); 45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!(t1 > t2)); 46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert( (t1 <= t2)); 47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert( (t1 >= t2)); 48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner T1 t1(Duration1(3)); 51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner T1 t2(Duration1(4)); 52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert( (t1 < t2)); 53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!(t1 > t2)); 54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert( (t1 <= t2)); 55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!(t1 >= t2)); 56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 58b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner T1 t1(Duration1(3)); 59b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner T2 t2(Duration2(3000)); 60b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!(t1 < t2)); 61b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!(t1 > t2)); 62b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert( (t1 <= t2)); 63b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert( (t1 >= t2)); 64b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 65b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 66b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner T1 t1(Duration1(3)); 67b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner T2 t2(Duration2(3001)); 68b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert( (t1 < t2)); 69b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!(t1 > t2)); 70b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert( (t1 <= t2)); 71b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!(t1 >= t2)); 72b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 735de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh 745de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh#if _LIBCPP_STD_VER > 11 755de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh { 765de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh constexpr T1 t1(Duration1(3)); 775de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh constexpr T1 t2(Duration1(3)); 785de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert(!(t1 < t2), ""); 795de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert(!(t1 > t2), ""); 805de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert( (t1 <= t2), ""); 815de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert( (t1 >= t2), ""); 825de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh } 835de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh { 845de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh constexpr T1 t1(Duration1(3)); 855de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh constexpr T1 t2(Duration1(4)); 865de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert( (t1 < t2), ""); 875de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert(!(t1 > t2), ""); 885de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert( (t1 <= t2), ""); 895de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert(!(t1 >= t2), ""); 905de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh } 915de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh { 925de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh constexpr T1 t1(Duration1(3)); 935de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh constexpr T2 t2(Duration2(3000)); 945de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert(!(t1 < t2), ""); 955de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert(!(t1 > t2), ""); 965de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert( (t1 <= t2), ""); 975de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert( (t1 >= t2), ""); 985de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh } 995de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh { 1005de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh constexpr T1 t1(Duration1(3)); 1015de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh constexpr T2 t2(Duration2(3001)); 1025de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert( (t1 < t2), ""); 1035de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert(!(t1 > t2), ""); 1045de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert( (t1 <= t2), ""); 1055de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh static_assert(!(t1 >= t2), ""); 1065de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh } 1075de42e6621b3d0131472c3f8838b7f0ccf3e8963Andrew Hsieh#endif 108b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 109