xref: /llvm-project/libcxx/include/__chrono/literals.h (revision 9783f28cbb155e4a8d49c12e1c60ce14dcfaf0c7)
1d7862497SMark de Wever // -*- C++ -*-
2d7862497SMark de Wever //===----------------------------------------------------------------------===//
3d7862497SMark de Wever //
4d7862497SMark de Wever // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5d7862497SMark de Wever // See https://llvm.org/LICENSE.txt for license information.
6d7862497SMark de Wever // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7d7862497SMark de Wever //
8d7862497SMark de Wever //===----------------------------------------------------------------------===//
9d7862497SMark de Wever 
10d7862497SMark de Wever #ifndef _LIBCPP___CHRONO_LITERALS_H
11d7862497SMark de Wever #define _LIBCPP___CHRONO_LITERALS_H
12d7862497SMark de Wever 
13d7862497SMark de Wever #include <__chrono/day.h>
14d7862497SMark de Wever #include <__chrono/year.h>
15d7862497SMark de Wever #include <__config>
16d7862497SMark de Wever 
17d7862497SMark de Wever #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
18d7862497SMark de Wever #  pragma GCC system_header
19d7862497SMark de Wever #endif
20d7862497SMark de Wever 
214f15267dSNikolas Klauser #if _LIBCPP_STD_VER >= 20
22d7862497SMark de Wever 
23d7862497SMark de Wever _LIBCPP_BEGIN_NAMESPACE_STD
24d7862497SMark de Wever 
25*9783f28cSLouis Dionne inline namespace literals {
26*9783f28cSLouis Dionne inline namespace chrono_literals {
27*9783f28cSLouis Dionne _LIBCPP_HIDE_FROM_ABI constexpr chrono::day operator""d(unsigned long long __d) noexcept {
28d7862497SMark de Wever   return chrono::day(static_cast<unsigned>(__d));
29d7862497SMark de Wever }
30d7862497SMark de Wever 
31*9783f28cSLouis Dionne _LIBCPP_HIDE_FROM_ABI constexpr chrono::year operator""y(unsigned long long __y) noexcept {
32d7862497SMark de Wever   return chrono::year(static_cast<int>(__y));
33d7862497SMark de Wever }
34d7862497SMark de Wever } // namespace chrono_literals
35d7862497SMark de Wever } // namespace literals
36d7862497SMark de Wever 
37d7862497SMark de Wever namespace chrono { // hoist the literals into namespace std::chrono
38d7862497SMark de Wever using namespace literals::chrono_literals;
39d7862497SMark de Wever } // namespace chrono
40d7862497SMark de Wever 
41d7862497SMark de Wever _LIBCPP_END_NAMESPACE_STD
42d7862497SMark de Wever 
434f15267dSNikolas Klauser #endif // _LIBCPP_STD_VER >= 20
44d7862497SMark de Wever 
45d7862497SMark de Wever #endif // _LIBCPP___CHRONO_LITERALS_H
46