//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // duration // template // explicit duration(const Rep2& r); #include #include #include #include "test_macros.h" #include "../../rep.h" #if TEST_STD_VER >= 11 struct NotValueConvertible { operator int() const&& = delete; constexpr operator int() const& { return 1; } }; #endif template TEST_CONSTEXPR_CXX14 void check(R r) { D d(r); assert(d.count() == r); } TEST_CONSTEXPR_CXX14 bool test() { check >(5); check > >(5); check > >(Rep(3)); check > >(5.5); // test for [time.duration.cons]/1 #if TEST_STD_VER >= 11 check >(NotValueConvertible()); #endif return true; } int main(int, char**) { test(); #if TEST_STD_VER > 11 static_assert(test(), ""); #endif // Basic test for constexpr-friendliness in C++11 #if TEST_STD_VER >= 11 { constexpr std::chrono::duration d(5); static_assert(d.count() == 5, ""); } #endif return 0; }