From Jason Turner

[tuple.general]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmppwe0ab74/{from.md → to.md} +27 -15
tmp/tmppwe0ab74/{from.md → to.md} RENAMED
@@ -15,19 +15,19 @@ namespace std {
15
 
16
  // [tuple.creation], tuple creation functions:
17
  const unspecified ignore;
18
 
19
  template <class... Types>
20
- tuple<VTypes...> make_tuple(Types&&...);
21
  template <class... Types>
22
- tuple<Types...> forward_as_tuple(Types&&...) noexcept;
23
 
24
  template<class... Types>
25
- tuple<Types&...> tie(Types&...) noexcept;
26
 
27
  template <class... Tuples>
28
- tuple<Ctypes...> tuple_cat(Tuples&&...);
29
 
30
  // [tuple.helper], tuple helper classes:
31
  template <class T> class tuple_size; // undefined
32
  template <class T> class tuple_size<const T>;
33
  template <class T> class tuple_size<volatile T>;
@@ -40,31 +40,43 @@ namespace std {
40
  template <size_t I, class T> class tuple_element<I, volatile T>;
41
  template <size_t I, class T> class tuple_element<I, const volatile T>;
42
 
43
  template <size_t I, class... Types> class tuple_element<I, tuple<Types...> >;
44
 
 
 
 
45
  // [tuple.elem], element access:
46
  template <size_t I, class... Types>
47
- typename tuple_element<I, tuple<Types...> >::type& get(tuple<Types...>&) noexcept;
48
- template <size_t I, class... types>
49
- typename tuple_element<I, tuple<Types...> >::type&& get(tuple<Types...>&&) noexcept;
50
- template <size_t I, class... types>
51
- typename tuple_element<I, tuple<Types...> >::type const& get(const tuple<Types...>&) noexcept;
 
 
 
 
 
 
 
 
 
52
 
53
  // [tuple.rel], relational operators:
54
  template<class... TTypes, class... UTypes>
55
- bool operator==(const tuple<TTypes...>&, const tuple<UTypes...>&);
56
  template<class... TTypes, class... UTypes>
57
- bool operator<(const tuple<TTypes...>&, const tuple<UTypes...>&);
58
  template<class... TTypes, class... UTypes>
59
- bool operator!=(const tuple<TTypes...>&, const tuple<UTypes...>&);
60
  template<class... TTypes, class... UTypes>
61
- bool operator>(const tuple<TTypes...>&, const tuple<UTypes...>&);
62
  template<class... TTypes, class... UTypes>
63
- bool operator<=(const tuple<TTypes...>&, const tuple<UTypes...>&);
64
  template<class... TTypes, class... UTypes>
65
- bool operator>=(const tuple<TTypes...>&, const tuple<UTypes...>&);
66
 
67
  // [tuple.traits], allocator-related traits
68
  template <class... Types, class Alloc>
69
  struct uses_allocator<tuple<Types...>, Alloc>;
70
 
 
15
 
16
  // [tuple.creation], tuple creation functions:
17
  const unspecified ignore;
18
 
19
  template <class... Types>
20
+ constexpr tuple<VTypes...> make_tuple(Types&&...);
21
  template <class... Types>
22
+ constexpr tuple<Types&&...> forward_as_tuple(Types&&...) noexcept;
23
 
24
  template<class... Types>
25
+ constexpr tuple<Types&...> tie(Types&...) noexcept;
26
 
27
  template <class... Tuples>
28
+ constexpr tuple<Ctypes...> tuple_cat(Tuples&&...);
29
 
30
  // [tuple.helper], tuple helper classes:
31
  template <class T> class tuple_size; // undefined
32
  template <class T> class tuple_size<const T>;
33
  template <class T> class tuple_size<volatile T>;
 
40
  template <size_t I, class T> class tuple_element<I, volatile T>;
41
  template <size_t I, class T> class tuple_element<I, const volatile T>;
42
 
43
  template <size_t I, class... Types> class tuple_element<I, tuple<Types...> >;
44
 
45
+ template <size_t I, class T>
46
+ using tuple_element_t = typename tuple_element<I, T>::type;
47
+
48
  // [tuple.elem], element access:
49
  template <size_t I, class... Types>
50
+ constexpr tuple_element_t<I, tuple<Types...>>&
51
+ get(tuple<Types...>&) noexcept;
52
+ template <size_t I, class... Types>
53
+ constexpr tuple_element_t<I, tuple<Types...>>&&
54
+ get(tuple<Types...>&&) noexcept;
55
+ template <size_t I, class... Types>
56
+ constexpr const tuple_element_t<I, tuple<Types...>>&
57
+ get(const tuple<Types...>&) noexcept;
58
+ template <class T, class... Types>
59
+ constexpr T& get(tuple<Types...>& t) noexcept;
60
+ template <class T, class... Types>
61
+ constexpr T&& get(tuple<Types...>&& t) noexcept;
62
+ template <class T, class... Types>
63
+ constexpr const T& get(const tuple<Types...>& t) noexcept;
64
 
65
  // [tuple.rel], relational operators:
66
  template<class... TTypes, class... UTypes>
67
+ constexpr bool operator==(const tuple<TTypes...>&, const tuple<UTypes...>&);
68
  template<class... TTypes, class... UTypes>
69
+ constexpr bool operator<(const tuple<TTypes...>&, const tuple<UTypes...>&);
70
  template<class... TTypes, class... UTypes>
71
+ constexpr bool operator!=(const tuple<TTypes...>&, const tuple<UTypes...>&);
72
  template<class... TTypes, class... UTypes>
73
+ constexpr bool operator>(const tuple<TTypes...>&, const tuple<UTypes...>&);
74
  template<class... TTypes, class... UTypes>
75
+ constexpr bool operator<=(const tuple<TTypes...>&, const tuple<UTypes...>&);
76
  template<class... TTypes, class... UTypes>
77
+ constexpr bool operator>=(const tuple<TTypes...>&, const tuple<UTypes...>&);
78
 
79
  // [tuple.traits], allocator-related traits
80
  template <class... Types, class Alloc>
81
  struct uses_allocator<tuple<Types...>, Alloc>;
82