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