libstdc++: Improve test for <utility> synopsis
libstdc++-v3/ChangeLog: * testsuite/20_util/headers/utility/synopsis.cc: Add declarations from C++11 and later.
This commit is contained in:
parent
2ae0566243
commit
0598e2f98d
1 changed files with 102 additions and 6 deletions
|
@ -20,6 +20,36 @@
|
|||
|
||||
#include <utility>
|
||||
|
||||
#if __cplusplus < 201103L
|
||||
# define CONSTEXPR
|
||||
#else
|
||||
# define CONSTEXPR constexpr
|
||||
#endif
|
||||
|
||||
#if __cplusplus < 201402L && ! defined(_GLIBCXX_RELEASE)
|
||||
# define CONSTEXPR11x
|
||||
#else
|
||||
# define CONSTEXPR11x constexpr
|
||||
#endif
|
||||
|
||||
#if __cplusplus < 201402L
|
||||
# define CONSTEXPR14
|
||||
#else
|
||||
# define CONSTEXPR14 constexpr
|
||||
#endif
|
||||
|
||||
#if __cplusplus < 201703L
|
||||
# define CONSTEXPR17
|
||||
#else
|
||||
# define CONSTEXPR17 constexpr
|
||||
#endif
|
||||
|
||||
#if __cplusplus < 202002L
|
||||
# define CONSTEXPR20
|
||||
#else
|
||||
# define CONSTEXPR20 constexpr
|
||||
#endif
|
||||
|
||||
namespace std {
|
||||
// lib.operators, operators:
|
||||
namespace rel_ops {
|
||||
|
@ -29,18 +59,84 @@ namespace std {
|
|||
template<class T> bool operator>=(const T&, const T&);
|
||||
}
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
#if 0
|
||||
// N.B. our std::swap doesn't actually match this due to constraints on
|
||||
// the template parameter.
|
||||
template<class T>
|
||||
CONSTEXPR20
|
||||
void swap(T&, T&) noexcept(is_nothrow_move_constructible<T>::value
|
||||
&& is_nothrow_move_assignable<T>::value);
|
||||
#endif
|
||||
|
||||
template<class T, size_t N>
|
||||
CONSTEXPR20
|
||||
void swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a, *b)));
|
||||
|
||||
#if __cplusplus >= 201703L
|
||||
template <class T, class U /* = T */>
|
||||
CONSTEXPR20
|
||||
T exchange(T& obj, U&& new_val)
|
||||
#if defined _GLIBCXX_RELEASE // This noexcept is a libstdc++ extension.
|
||||
noexcept(__and_<is_nothrow_move_constructible<T>,
|
||||
is_nothrow_assignable<T&, U>>::value)
|
||||
#endif
|
||||
;
|
||||
#endif
|
||||
|
||||
template<class T>
|
||||
CONSTEXPR11x
|
||||
T&& forward(typename remove_reference<T>::type& t) noexcept;
|
||||
template<class T>
|
||||
CONSTEXPR11x
|
||||
T&& forward(typename remove_reference<T>::type&& t) noexcept;
|
||||
|
||||
template<class T>
|
||||
CONSTEXPR11x
|
||||
typename remove_reference<T>::type&& move(T&& t) noexcept;
|
||||
|
||||
template<class T>
|
||||
CONSTEXPR17
|
||||
typename conditional< ! is_nothrow_move_constructible<T>::value
|
||||
&& is_copy_constructible<T>::value,
|
||||
const T&, T&&>::type
|
||||
move_if_noexcept(T& x) noexcept;
|
||||
|
||||
#if __cplusplus >= 201703L
|
||||
template<class T>
|
||||
constexpr add_const_t<T>& as_const(T& t) noexcept;
|
||||
#endif
|
||||
|
||||
template <class T>
|
||||
typename add_rvalue_reference<T>::type declval() noexcept;
|
||||
|
||||
#if __cplusplus >= 201402L
|
||||
template<class T, T...> struct integer_sequence;
|
||||
#endif
|
||||
|
||||
#endif // C++11
|
||||
|
||||
// lib.pairs, pairs:
|
||||
template <class T1, class T2> struct pair;
|
||||
template <class T1, class T2>
|
||||
_GLIBCXX_CONSTEXPR bool operator==(const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
CONSTEXPR bool operator==(const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
template <class T1, class T2>
|
||||
_GLIBCXX_CONSTEXPR bool operator< (const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
CONSTEXPR bool operator< (const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
template <class T1, class T2>
|
||||
_GLIBCXX_CONSTEXPR bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
CONSTEXPR bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
template <class T1, class T2>
|
||||
_GLIBCXX_CONSTEXPR bool operator> (const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
CONSTEXPR bool operator> (const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
template <class T1, class T2>
|
||||
_GLIBCXX_CONSTEXPR bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
CONSTEXPR bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
template <class T1, class T2>
|
||||
_GLIBCXX_CONSTEXPR bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
CONSTEXPR bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&);
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
struct piecewise_construct_t;
|
||||
#if __cplusplus >= 201703L
|
||||
struct in_place_t;
|
||||
template<class> struct in_place_type_t;
|
||||
template<size_t> struct in_place_index_t;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue