111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//===----------------------------------------------------------------------===// 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// The LLVM Compiler Infrastructure 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// This file is dual licensed under the MIT and the University of Illinois Open 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Source Licenses. See LICENSE.TXT for details. 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//===----------------------------------------------------------------------===// 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// <chrono> 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// time_point 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// template <class Clock, class Duration1, class Duration2> 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// typename common_type<Duration1, Duration2>::type 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// operator-(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <chrono> 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <cassert> 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint main() 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef std::chrono::system_clock Clock; 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef std::chrono::milliseconds Duration1; 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef std::chrono::microseconds Duration2; 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert { 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert std::chrono::time_point<Clock, Duration1> t1(Duration1(3)); 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert std::chrono::time_point<Clock, Duration2> t2(Duration2(5)); 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert assert((t1 - t2) == Duration2(2995)); 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if _LIBCPP_STD_VER > 11 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert { 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert constexpr std::chrono::time_point<Clock, Duration1> t1(Duration1(3)); 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert constexpr std::chrono::time_point<Clock, Duration2> t2(Duration2(5)); 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert static_assert((t1 - t2) == Duration2(2995), ""); 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 39