| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // Copyright (C) 2024 Ryan Malcolm Underwood.
- //
- // Use, modification, and distribution is subject to the Boost Software
- // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- //
- // See http://www.boost.org/libs/optional for documentation.
- //
- // You are welcome to contact the author at:
- // typenametea@gmail.com
- #ifndef BOOST_OPTIONAL_OPTIONAL_DETAIL_OPTIONAL_UTILITY_RMU_06OCT2024_HPP
- #define BOOST_OPTIONAL_OPTIONAL_DETAIL_OPTIONAL_UTILITY_RMU_06OCT2024_HPP
- namespace boost {
- namespace optional_detail {
- // Workaround: forward and move aren't constexpr in C++11
- template <class T>
- inline constexpr T&& forward(typename boost::remove_reference<T>::type& t) noexcept
- {
- return static_cast<T&&>(t);
- }
- template <class T>
- inline constexpr T&& forward(typename boost::remove_reference<T>::type&& t) noexcept
- {
- static_assert(!boost::is_lvalue_reference<T>::value, "Can not forward an rvalue as an lvalue.");
- return static_cast<T&&>(t);
- }
- template <class T>
- inline constexpr typename boost::remove_reference<T>::type&& move(T&& t) noexcept
- {
- return static_cast<typename boost::remove_reference<T>::type&&>(t);
- }
- } // namespace optional_detail
- } // namespace boost
- #endif
|