brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 7ea692d Raw
70 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// UNSUPPORTED: c++03, c++11, c++14, c++1710// UNSUPPORTED: no-filesystem, no-localization, no-tzdb11 12// XFAIL: libcpp-has-no-experimental-tzdb13// XFAIL: availability-tzdb-missing14 15// <chrono>16 17// class leap_second18// {19//   leap_second& operator=(const leap_second&) = default;20//21//   ...22// };23 24#include <chrono>25#include <concepts>26#include <memory>27#include <type_traits>28#include <cassert>29 30#include "test_chrono_leap_second.h"31 32constexpr bool test() {33  std::chrono::leap_second a =34      test_leap_second_create(std::chrono::sys_seconds{std::chrono::seconds{0}}, std::chrono::seconds{1});35  std::chrono::leap_second b =36      test_leap_second_create(std::chrono::sys_seconds{std::chrono::seconds{10}}, std::chrono::seconds{15});37 38  //  operator== only compares the date member.39  assert(a.date() != b.date());40  assert(a.value() != b.value());41 42  {43    std::same_as<std::chrono::leap_second&> decltype(auto) result(b = a);44    assert(std::addressof(result) == std::addressof(b));45 46    assert(a.date() == b.date());47    assert(a.value() == b.value());48  }49 50  {51    // Tests an rvalue uses the copy assignment.52    std::same_as<std::chrono::leap_second&> decltype(auto) result(b = std::move(a));53    assert(std::addressof(result) == std::addressof(b));54 55    assert(a.date() == b.date());56    assert(a.value() == b.value());57  }58 59  return true;60}61 62int main(int, const char**) {63  static_assert(std::is_copy_assignable_v<std::chrono::leap_second>);64 65  test();66  static_assert(test());67 68  return 0;69}70