File indexing completed on 2025-07-15 08:41:39
0001
0002
0003
0004
0005
0006 #ifndef BOOST_PFR_DETAIL_STDTUPLE_HPP
0007 #define BOOST_PFR_DETAIL_STDTUPLE_HPP
0008 #pragma once
0009
0010 #include <boost/pfr/detail/config.hpp>
0011
0012 #include <utility> // metaprogramming stuff
0013 #include <tuple>
0014
0015 #include <boost/pfr/detail/sequence_tuple.hpp>
0016
0017 namespace boost { namespace pfr { namespace detail {
0018
0019 template <class T, std::size_t... I>
0020 constexpr auto make_stdtuple_from_tietuple(const T& t, std::index_sequence<I...>) {
0021 (void)t;
0022 return std::make_tuple(
0023 boost::pfr::detail::sequence_tuple::get<I>(t)...
0024 );
0025 }
0026
0027 template <class T, std::size_t... I>
0028 constexpr auto make_stdtiedtuple_from_tietuple(const T& t, std::index_sequence<I...>) noexcept {
0029 (void)t;
0030 return std::tie(
0031 boost::pfr::detail::sequence_tuple::get<I>(t)...
0032 );
0033 }
0034
0035 template <class T, std::size_t... I>
0036 constexpr auto make_conststdtiedtuple_from_tietuple(const T& t, std::index_sequence<I...>) noexcept {
0037 (void)t;
0038 return std::tuple<
0039 std::add_lvalue_reference_t<std::add_const_t<
0040 std::remove_reference_t<decltype(boost::pfr::detail::sequence_tuple::get<I>(t))>
0041 >>...
0042 >(
0043 boost::pfr::detail::sequence_tuple::get<I>(t)...
0044 );
0045 }
0046
0047 }}}
0048
0049 #endif