duration_cast.pass.cpp revision c52f43e72dfcea03037729649da84c23b3beb04a
1c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant//===----------------------------------------------------------------------===// 2c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// 3c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// The LLVM Compiler Infrastructure 4c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// 5c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// This file is distributed under the University of Illinois Open Source 6c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// License. See LICENSE.TXT for details. 7c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// 8c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant//===----------------------------------------------------------------------===// 9c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 10c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// <chrono> 11c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 12c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// duration 13c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 14c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// template <class ToDuration, class Rep, class Period> 15c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// ToDuration 16c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// duration_cast(const duration<Rep, Period>& d); 17c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 18c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant#include <chrono> 19c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant#include <type_traits> 20c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant#include <cassert> 21c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 22c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnanttemplate <class ToDuration, class FromDuration> 23c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnantvoid 24c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnanttest(const FromDuration& f, const ToDuration& d) 25c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant{ 26c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant typedef decltype(std::chrono::duration_cast<ToDuration>(f)) R; 27c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant static_assert((std::is_same<R, ToDuration>::value), ""); 28c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant assert(std::chrono::duration_cast<ToDuration>(f) == d); 29c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant} 30c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 31c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnantint main() 32c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant{ 33c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant test(std::chrono::milliseconds(7265000), std::chrono::hours(2)); 34c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant test(std::chrono::milliseconds(7265000), std::chrono::minutes(121)); 35c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant test(std::chrono::milliseconds(7265000), std::chrono::seconds(7265)); 36c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant test(std::chrono::milliseconds(7265000), std::chrono::milliseconds(7265000)); 37c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant test(std::chrono::milliseconds(7265000), std::chrono::microseconds(7265000000LL)); 38c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant test(std::chrono::milliseconds(7265000), std::chrono::nanoseconds(7265000000000LL)); 39c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant test(std::chrono::milliseconds(7265000), 40c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant std::chrono::duration<double, std::ratio<3600> >(7265./3600)); 41c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant test(std::chrono::duration<int, std::ratio<2, 3> >(9), 42c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant std::chrono::duration<int, std::ratio<3, 5> >(10)); 43c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant} 44