1 /// \file 2 // Range v3 library 3 // 4 // Copyright Eric Niebler 2013-present 5 // 6 // Use, modification and distribution is subject to the 7 // Boost Software License, Version 1.0. (See accompanying 8 // file LICENSE_1_0.txt or copy at 9 // http://www.boost.org/LICENSE_1_0.txt) 10 // 11 // Project home: https://github.com/ericniebler/range-v3 12 13 #ifndef RANGES_V3_UTILITY_TAGGED_TUPLE_HPP 14 #define RANGES_V3_UTILITY_TAGGED_TUPLE_HPP 15 16 #include <tuple> 17 18 #include <range/v3/range_fwd.hpp> 19 20 #include <range/v3/utility/tagged_pair.hpp> 21 22 #include <range/v3/detail/prologue.hpp> 23 24 RANGES_DIAGNOSTIC_PUSH 25 RANGES_DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS 26 27 namespace ranges 28 { 29 template<typename... Ts> 30 using tagged_tuple RANGES_DEPRECATED("ranges::tagged_tuple is deprecated.") = 31 tagged<std::tuple<detail::tag_elem<Ts>...>, detail::tag_spec<Ts>...>; 32 33 template<typename... Tags, typename... Ts> 34 RANGES_DEPRECATED("ranges::make_tagged_tuple is deprecated.") make_tagged_tuple(Ts &&...ts)35 constexpr tagged_tuple<Tags(bind_element_t<Ts>)...> make_tagged_tuple(Ts &&... ts) 36 { 37 return tagged_tuple<Tags(bind_element_t<Ts>)...>{static_cast<Ts &&>(ts)...}; 38 } 39 } // namespace ranges 40 41 RANGES_DIAGNOSTIC_POP 42 43 #include <range/v3/detail/epilogue.hpp> 44 45 #endif 46