libstdc++: Add attribute to features deprecated in C++17 [PR91260]
There are a lot of things in the C++ standard library which were deprecated in C++11, and more in C++17. Some of them were removed after deprecation and are no longer present in the standard at all. We have not removed these from libstdc++ because keeping them as non-standard extensions is conforming, and avoids gratuitously breaking user code, and in some cases we need to keep using them to avoid ABI changes. But we should at least give a warning for using them. That has not been done previously because of the library's own uses of them (e.g. the std::iterator class template used as a base class). This adds deprecated attributes to the relevant components, and then goes through the whole library to add diagnostic pragmas where needed to suppress warnings about our internal uses of them. The tests are updated to either expect the additional warnings, or to suppress them where we aren't interested in them. libstdc++-v3/ChangeLog: PR libstdc++/91260 PR libstdc++/91383 PR libstdc++/95065 * include/backward/binders.h (bind1st, bind2nd): Add deprecated attribute. * include/bits/refwrap.h (_Maybe_unary_or_binary_function): Disable deprecated warnings for base classes. (_Reference_wrapper_base): Likewise. * include/bits/shared_ptr_base.h (_Sp_owner_less): Likewise. * include/bits/stl_bvector.h (_Bit_iterator_base): Likewise. * include/bits/stl_function.h (unary_function, binary_function): Add deprecated attribute. (unary_negate, not1, binary_negate, not2, ptr_fun) (pointer_to_unary_function, pointer_to_binary_function) (mem_fun_t, const_mem_fun_t, mem_fun_ref_t, const_mem_fun_ref_t) (mem_fun1_t, const_mem_fun1_t, mem_fun_ref1_t) (const_mem_fun1_ref_t, mem_fun, mem_fun_ref): Add deprecated attributes. * include/bits/stl_iterator.h: Disable deprecated warnings for std::iterator base classes. * include/bits/stl_iterator_base_types.h (iterator): Add deprecated attribute. * include/bits/stl_map.h (map::value_compare): Disable deprecated warnings for base class. * include/bits/stl_multimap.h (multimap::value_compare): Likewise. * include/bits/stl_raw_storage_iter.h (raw_storage_iterator): Add deprecated attribute. * include/bits/stl_tempbuf.h (get_temporary_buffer): Likewise. * include/bits/stream_iterator.h: Disable deprecated warnings. * include/bits/streambuf_iterator.h: Likewise. * include/ext/bitmap_allocator.h: Remove unary_function base classes. * include/ext/functional: Disable deprecated warnings. * include/ext/rope: Likewise. * include/ext/throw_allocator.h: Likewise. * include/std/type_traits (result_of): Add deprecated attribute. * include/tr1/functional: Disable deprecated warnings. * include/tr1/functional_hash.h: Likewise. * testsuite/20_util/function_objects/binders/1.cc: Add -Wno-disable-deprecations. * testsuite/20_util/function_objects/binders/3113.cc: Likewise. * testsuite/20_util/function_objects/constexpr.cc: Add dg-warning. * testsuite/20_util/raw_storage_iterator/base.cc: Likewise. * testsuite/20_util/raw_storage_iterator/dr2127.cc: Likewise. * testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc: Likewise. * testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc: Likewise. * testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc: Likewise. * testsuite/20_util/reference_wrapper/24803.cc: Likewise. * testsuite/20_util/reference_wrapper/typedefs.cc: Enable for C++20 and check for absence of nested types. * testsuite/20_util/shared_ptr/comparison/less.cc: Remove std::binary_function base class. * testsuite/20_util/temporary_buffer.cc: Add dg-warning. * testsuite/21_strings/basic_string/cons/char/69092.cc: Remove std::iterator base class. * testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/insert_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/istream_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/istreambuf_iterator/92285.cc: Likewise. * testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc: Likewise. * testsuite/25_algorithms/copy/34595.cc: Likewise. * testsuite/25_algorithms/minmax/3.cc: Remove std::binary_function base class. * testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc: Disable deprecated warnings. * testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc: Add dg-warning. * testsuite/ext/pb_ds/example/priority_queue_erase_if.cc: Likewise. * testsuite/ext/pb_ds/example/priority_queue_split_join.cc: Likewise. * testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc: Disable deprecated warnings. * testsuite/tr1/6_containers/hash/requirements/base_classes.cc: Likewise. * testsuite/util/regression/trait/erase_if_fn.hpp: Remove std::unary_function base classes. * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Remove std::iterator base classes.
This commit is contained in:
parent
ac6a118120
commit
de196e5dd8
99 changed files with 439 additions and 138 deletions
|
@ -131,6 +131,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
/// One of the @link binders binder functors@endlink.
|
||||
template<typename _Operation, typename _Tp>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::bind")
|
||||
inline binder1st<_Operation>
|
||||
bind1st(const _Operation& __fn, const _Tp& __x)
|
||||
{
|
||||
|
@ -166,6 +167,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
/// One of the @link binders binder functors@endlink.
|
||||
template<typename _Operation, typename _Tp>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::bind")
|
||||
inline binder2nd<_Operation>
|
||||
bind2nd(const _Operation& __fn, const _Tp& __x)
|
||||
{
|
||||
|
|
|
@ -52,6 +52,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
template<typename _Res, typename... _ArgTypes>
|
||||
struct _Maybe_unary_or_binary_function { };
|
||||
|
||||
// Ignore warnings about unary_function and binary_function.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/// Derives from @c unary_function, as appropriate.
|
||||
template<typename _Res, typename _T1>
|
||||
struct _Maybe_unary_or_binary_function<_Res, _T1>
|
||||
|
@ -62,6 +66,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
struct _Maybe_unary_or_binary_function<_Res, _T1, _T2>
|
||||
: std::binary_function<_T1, _T2, _Res> { };
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
template<typename _Signature>
|
||||
struct _Mem_fn_traits;
|
||||
|
||||
|
@ -215,6 +221,10 @@ _GLIBCXX_MEM_FN_TRAITS(&& noexcept, false_type, true_type)
|
|||
: _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp>
|
||||
{ };
|
||||
|
||||
// Ignore warnings about unary_function and binary_function.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
// - a function type (unary)
|
||||
template<typename _Res, typename _T1 _GLIBCXX_NOEXCEPT_PARM>
|
||||
struct _Reference_wrapper_base<_Res(_T1) _GLIBCXX_NOEXCEPT_QUAL>
|
||||
|
@ -280,6 +290,7 @@ _GLIBCXX_MEM_FN_TRAITS(&& noexcept, false_type, true_type)
|
|||
{
|
||||
using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type;
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
#endif // ! C++20
|
||||
|
||||
/// @endcond
|
||||
|
|
|
@ -2108,6 +2108,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept
|
||||
{ __a.swap(__b); }
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
template<typename _Tp, typename _Tp1>
|
||||
struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool>
|
||||
{
|
||||
|
@ -2123,6 +2125,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept
|
||||
{ return __lhs.owner_before(__rhs); }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
template<>
|
||||
struct _Sp_owner_less<void, void>
|
||||
|
|
|
@ -156,6 +156,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
|||
#endif
|
||||
};
|
||||
|
||||
// Ignore warnings about std::iterator.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
struct _Bit_iterator_base
|
||||
: public std::iterator<std::random_access_iterator_tag, bool>
|
||||
{
|
||||
|
@ -255,6 +258,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
|||
+ __x._M_offset - __y._M_offset);
|
||||
}
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
struct _Bit_iterator : public _Bit_iterator_base
|
||||
{
|
||||
|
|
|
@ -121,7 +121,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
/// @c result_type is the return type
|
||||
typedef _Result result_type;
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/**
|
||||
* Helper for defining adaptable binary function objects.
|
||||
|
@ -138,7 +138,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
/// @c result_type is the return type
|
||||
typedef _Result result_type;
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
/** @} */
|
||||
|
||||
// 20.3.2 arithmetic
|
||||
|
@ -175,6 +175,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
struct negate;
|
||||
#endif
|
||||
|
||||
// Ignore warnings about unary_function and binary_function.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/// One of the @link arithmetic_functors math functors@endlink.
|
||||
template<typename _Tp>
|
||||
struct plus : public binary_function<_Tp, _Tp, _Tp>
|
||||
|
@ -235,6 +239,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
operator()(const _Tp& __x) const
|
||||
{ return -__x; }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#if __cplusplus > 201103L
|
||||
|
||||
|
@ -360,6 +365,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
struct less_equal;
|
||||
#endif
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/// One of the @link comparison_functors comparison functors@endlink.
|
||||
template<typename _Tp>
|
||||
struct equal_to : public binary_function<_Tp, _Tp, bool>
|
||||
|
@ -479,6 +487,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
return (__UINTPTR_TYPE__)__x <= (__UINTPTR_TYPE__)__y;
|
||||
}
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#if __cplusplus >= 201402L
|
||||
/// One of the @link comparison_functors comparison functors@endlink.
|
||||
|
@ -779,6 +788,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
struct logical_not;
|
||||
#endif
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/// One of the @link logical_functors Boolean operations functors@endlink.
|
||||
template<typename _Tp>
|
||||
struct logical_and : public binary_function<_Tp, _Tp, bool>
|
||||
|
@ -808,6 +820,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
operator()(const _Tp& __x) const
|
||||
{ return !__x; }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#if __cplusplus > 201103L
|
||||
/// One of the @link logical_functors Boolean operations functors@endlink.
|
||||
|
@ -871,6 +884,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
struct bit_not;
|
||||
#endif
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||
// DR 660. Missing Bitwise Operations.
|
||||
template<typename _Tp>
|
||||
|
@ -908,6 +924,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
operator()(const _Tp& __x) const
|
||||
{ return ~__x; }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#if __cplusplus > 201103L
|
||||
template <>
|
||||
|
@ -965,7 +982,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
typedef __is_transparent is_transparent;
|
||||
};
|
||||
#endif
|
||||
#endif // C++14
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
// 20.3.5 negators
|
||||
/** @defgroup negators Negators
|
||||
|
@ -1001,7 +1021,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
*/
|
||||
/// One of the @link negators negation functors@endlink.
|
||||
template<typename _Predicate>
|
||||
class unary_negate
|
||||
class _GLIBCXX17_DEPRECATED unary_negate
|
||||
: public unary_function<typename _Predicate::argument_type, bool>
|
||||
{
|
||||
protected:
|
||||
|
@ -1020,6 +1040,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
/// One of the @link negators negation functors@endlink.
|
||||
template<typename _Predicate>
|
||||
_GLIBCXX17_DEPRECATED_SUGGEST("std::not_fn")
|
||||
_GLIBCXX14_CONSTEXPR
|
||||
inline unary_negate<_Predicate>
|
||||
not1(const _Predicate& __pred)
|
||||
|
@ -1027,7 +1048,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
/// One of the @link negators negation functors@endlink.
|
||||
template<typename _Predicate>
|
||||
class binary_negate
|
||||
class _GLIBCXX17_DEPRECATED binary_negate
|
||||
: public binary_function<typename _Predicate::first_argument_type,
|
||||
typename _Predicate::second_argument_type, bool>
|
||||
{
|
||||
|
@ -1048,6 +1069,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
/// One of the @link negators negation functors@endlink.
|
||||
template<typename _Predicate>
|
||||
_GLIBCXX17_DEPRECATED_SUGGEST("std::not_fn")
|
||||
_GLIBCXX14_CONSTEXPR
|
||||
inline binary_negate<_Predicate>
|
||||
not2(const _Predicate& __pred)
|
||||
|
@ -1095,10 +1117,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
_Result
|
||||
operator()(_Arg __x) const
|
||||
{ return _M_ptr(__x); }
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/// One of the @link pointer_adaptors adaptors for function pointers@endlink.
|
||||
template<typename _Arg, typename _Result>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline pointer_to_unary_function<_Arg, _Result>
|
||||
ptr_fun(_Result (*__x)(_Arg))
|
||||
{ return pointer_to_unary_function<_Arg, _Result>(__x); }
|
||||
|
@ -1121,10 +1144,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
_Result
|
||||
operator()(_Arg1 __x, _Arg2 __y) const
|
||||
{ return _M_ptr(__x, __y); }
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/// One of the @link pointer_adaptors adaptors for function pointers@endlink.
|
||||
template<typename _Arg1, typename _Arg2, typename _Result>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
|
||||
ptr_fun(_Result (*__x)(_Arg1, _Arg2))
|
||||
{ return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
|
||||
|
@ -1218,7 +1242,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
private:
|
||||
_Ret (_Tp::*_M_f)();
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/// One of the @link ptrmem_adaptors adaptors for member pointers@endlink.
|
||||
template<typename _Ret, typename _Tp>
|
||||
|
@ -1235,7 +1259,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
private:
|
||||
_Ret (_Tp::*_M_f)() const;
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/// One of the @link ptrmem_adaptors adaptors for member pointers@endlink.
|
||||
template<typename _Ret, typename _Tp>
|
||||
|
@ -1252,7 +1276,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
private:
|
||||
_Ret (_Tp::*_M_f)();
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/// One of the @link ptrmem_adaptors adaptors for member pointers@endlink.
|
||||
template<typename _Ret, typename _Tp>
|
||||
|
@ -1269,7 +1293,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
private:
|
||||
_Ret (_Tp::*_M_f)() const;
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/// One of the @link ptrmem_adaptors adaptors for member pointers@endlink.
|
||||
template<typename _Ret, typename _Tp, typename _Arg>
|
||||
|
@ -1286,7 +1310,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
private:
|
||||
_Ret (_Tp::*_M_f)(_Arg);
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/// One of the @link ptrmem_adaptors adaptors for member pointers@endlink.
|
||||
template<typename _Ret, typename _Tp, typename _Arg>
|
||||
|
@ -1303,7 +1327,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
private:
|
||||
_Ret (_Tp::*_M_f)(_Arg) const;
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/// One of the @link ptrmem_adaptors adaptors for member pointers@endlink.
|
||||
template<typename _Ret, typename _Tp, typename _Arg>
|
||||
|
@ -1320,7 +1344,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
private:
|
||||
_Ret (_Tp::*_M_f)(_Arg);
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
/// One of the @link ptrmem_adaptors adaptors for member pointers@endlink.
|
||||
template<typename _Ret, typename _Tp, typename _Arg>
|
||||
|
@ -1337,49 +1361,58 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
private:
|
||||
_Ret (_Tp::*_M_f)(_Arg) const;
|
||||
};
|
||||
} _GLIBCXX11_DEPRECATED;
|
||||
|
||||
// Mem_fun adaptor helper functions. There are only two:
|
||||
// mem_fun and mem_fun_ref.
|
||||
template<typename _Ret, typename _Tp>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline mem_fun_t<_Ret, _Tp>
|
||||
mem_fun(_Ret (_Tp::*__f)())
|
||||
{ return mem_fun_t<_Ret, _Tp>(__f); }
|
||||
|
||||
template<typename _Ret, typename _Tp>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline const_mem_fun_t<_Ret, _Tp>
|
||||
mem_fun(_Ret (_Tp::*__f)() const)
|
||||
{ return const_mem_fun_t<_Ret, _Tp>(__f); }
|
||||
|
||||
template<typename _Ret, typename _Tp>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline mem_fun_ref_t<_Ret, _Tp>
|
||||
mem_fun_ref(_Ret (_Tp::*__f)())
|
||||
{ return mem_fun_ref_t<_Ret, _Tp>(__f); }
|
||||
|
||||
template<typename _Ret, typename _Tp>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline const_mem_fun_ref_t<_Ret, _Tp>
|
||||
mem_fun_ref(_Ret (_Tp::*__f)() const)
|
||||
{ return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
|
||||
|
||||
template<typename _Ret, typename _Tp, typename _Arg>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline mem_fun1_t<_Ret, _Tp, _Arg>
|
||||
mem_fun(_Ret (_Tp::*__f)(_Arg))
|
||||
{ return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
|
||||
|
||||
template<typename _Ret, typename _Tp, typename _Arg>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline const_mem_fun1_t<_Ret, _Tp, _Arg>
|
||||
mem_fun(_Ret (_Tp::*__f)(_Arg) const)
|
||||
{ return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
|
||||
|
||||
template<typename _Ret, typename _Tp, typename _Arg>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
|
||||
mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
|
||||
{ return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
|
||||
|
||||
template<typename _Ret, typename _Tp, typename _Arg>
|
||||
_GLIBCXX11_DEPRECATED_SUGGEST("std::mem_fn")
|
||||
inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
|
||||
mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
|
||||
{ return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -105,6 +105,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
}
|
||||
#endif
|
||||
|
||||
// Ignore warnings about std::iterator.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
// 24.4.1 Reverse iterators
|
||||
/**
|
||||
* Bidirectional and random access iterators have corresponding reverse
|
||||
|
@ -991,6 +995,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
{ return *this; }
|
||||
};
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
/**
|
||||
* @param __x A container of arbitrary type.
|
||||
* @param __i An iterator into the container.
|
||||
|
|
|
@ -124,7 +124,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
*/
|
||||
template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
|
||||
typename _Pointer = _Tp*, typename _Reference = _Tp&>
|
||||
struct iterator
|
||||
struct _GLIBCXX17_DEPRECATED iterator
|
||||
{
|
||||
/// One of the @link iterator_tags tag types@endlink.
|
||||
typedef _Category iterator_category;
|
||||
|
|
|
@ -126,6 +126,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
|||
#endif
|
||||
|
||||
public:
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
class value_compare
|
||||
: public std::binary_function<value_type, value_type, bool>
|
||||
{
|
||||
|
@ -140,6 +142,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
|||
bool operator()(const value_type& __x, const value_type& __y) const
|
||||
{ return comp(__x.first, __y.first); }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
private:
|
||||
/// This turns a red-black tree into a [multi]map.
|
||||
|
|
|
@ -125,6 +125,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
|||
#endif
|
||||
|
||||
public:
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
class value_compare
|
||||
: public std::binary_function<value_type, value_type, bool>
|
||||
{
|
||||
|
@ -139,6 +141,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
|||
bool operator()(const value_type& __x, const value_type& __y) const
|
||||
{ return comp(__x.first, __y.first); }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
private:
|
||||
/// This turns a red-black tree into a [multi]map.
|
||||
|
|
|
@ -60,12 +60,16 @@ namespace std _GLIBCXX_VISIBILITY(default)
|
|||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
// Ignore warnings about std::iterator.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/**
|
||||
* This iterator class lets algorithms store their results into
|
||||
* uninitialized memory.
|
||||
*/
|
||||
template <class _OutputIterator, class _Tp>
|
||||
class raw_storage_iterator
|
||||
class _GLIBCXX17_DEPRECATED raw_storage_iterator
|
||||
: public iterator<output_iterator_tag, void, void, void, void>
|
||||
{
|
||||
protected:
|
||||
|
@ -116,6 +120,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
// 2454. Add raw_storage_iterator::base() member
|
||||
_OutputIterator base() const { return _M_iter; }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
} // namespace
|
||||
|
|
|
@ -96,6 +96,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
* Provides the nothrow exception guarantee.
|
||||
*/
|
||||
template<typename _Tp>
|
||||
_GLIBCXX14_DEPRECATED
|
||||
pair<_Tp*, ptrdiff_t>
|
||||
get_temporary_buffer(ptrdiff_t __len) _GLIBCXX_NOEXCEPT
|
||||
{
|
||||
|
|
|
@ -43,6 +43,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
* @{
|
||||
*/
|
||||
|
||||
// Ignore warnings about std::iterator.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/// Provides input iterator semantics for streams.
|
||||
template<typename _Tp, typename _CharT = char,
|
||||
typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t>
|
||||
|
@ -256,6 +260,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
operator++(int) _GLIBCXX_NOEXCEPT
|
||||
{ return *this; }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
/// @} group iterators
|
||||
|
||||
|
|
|
@ -44,6 +44,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
* @{
|
||||
*/
|
||||
|
||||
// Ignore warnings about std::iterator.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
// 24.5.3 Template class istreambuf_iterator
|
||||
/// Provides input iterator semantics for streambufs.
|
||||
template<typename _CharT, typename _Traits>
|
||||
|
@ -326,6 +329,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
return *this;
|
||||
}
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
// Overloads for streambuf iterators.
|
||||
template<typename _CharT>
|
||||
|
|
|
@ -277,7 +277,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
// _Tp should be a pointer type.
|
||||
template<typename _Tp>
|
||||
class _Inclusive_between
|
||||
: public std::unary_function<typename std::pair<_Tp, _Tp>, bool>
|
||||
{
|
||||
typedef _Tp pointer;
|
||||
pointer _M_ptr_value;
|
||||
|
@ -301,8 +300,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
// Used to pass a Functor to functions by reference.
|
||||
template<typename _Functor>
|
||||
class _Functor_Ref
|
||||
: public std::unary_function<typename _Functor::argument_type,
|
||||
typename _Functor::result_type>
|
||||
{
|
||||
_Functor& _M_fref;
|
||||
|
||||
|
@ -327,16 +324,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
// the vector.
|
||||
template<typename _Tp>
|
||||
class _Ffit_finder
|
||||
: public std::unary_function<typename std::pair<_Tp, _Tp>, bool>
|
||||
{
|
||||
typedef typename std::pair<_Tp, _Tp> _Block_pair;
|
||||
typedef typename __detail::__mini_vector<_Block_pair> _BPVector;
|
||||
typedef std::pair<_Tp, _Tp> _Block_pair;
|
||||
typedef __detail::__mini_vector<_Block_pair> _BPVector;
|
||||
typedef typename _BPVector::difference_type _Counter_type;
|
||||
|
||||
std::size_t* _M_pbitmap;
|
||||
_Counter_type _M_data_offset;
|
||||
|
||||
public:
|
||||
typedef bool result_type;
|
||||
typedef _Block_pair argument_type;
|
||||
|
||||
_Ffit_finder() : _M_pbitmap(0), _M_data_offset(0)
|
||||
{ }
|
||||
|
||||
|
|
|
@ -64,6 +64,9 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
|
|||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/** The @c identity_element functions are not part of the C++
|
||||
* standard; SGI provided them as an extension. Its argument is an
|
||||
* operation, and its return value is the identity element for that
|
||||
|
@ -391,6 +394,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
{ _M_initialize(161803398u); }
|
||||
};
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
// Mem_fun adaptor helper functions mem_fun1 and mem_fun1_ref,
|
||||
// provided for backward compatibility, they are no longer part of
|
||||
// the C++ standard.
|
||||
|
|
|
@ -171,6 +171,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
// behave a little like basic_ostringstream<sequence::value_type> and a
|
||||
// little like containers.
|
||||
|
||||
// Ignore warnings about std::iterator.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
template<class _Sequence, std::size_t _Buf_sz = 100>
|
||||
class sequence_buffer
|
||||
: public std::iterator<std::output_iterator_tag, void, void, void, void>
|
||||
|
@ -306,6 +310,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
operator++(int)
|
||||
{ return *this; }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
// The following should be treated as private, at least for now.
|
||||
template<class _CharT>
|
||||
|
@ -430,7 +435,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
// Some helpers, so we can use power on ropes.
|
||||
// See below for why this isn't local to the implementation.
|
||||
|
||||
|
||||
// Ignore warnings about std::binary_function.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
// This uses a nonstandard refcount convention.
|
||||
// The result has refcount 0.
|
||||
template<class _CharT, class _Alloc>
|
||||
|
@ -443,6 +451,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
const rope<_CharT, _Alloc>& __y)
|
||||
{ return __x + __y; }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
template <class _CharT, class _Alloc>
|
||||
inline rope<_CharT, _Alloc>
|
||||
|
@ -1059,6 +1068,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
// Iterators are assumed to be thread private. Ropes can
|
||||
// be shared.
|
||||
|
||||
// Ignore warnings about std::iterator
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
template<class _CharT, class _Alloc>
|
||||
class _Rope_iterator_base
|
||||
: public std::iterator<std::random_access_iterator_tag, _CharT>
|
||||
|
@ -1136,6 +1148,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
}
|
||||
}
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
template<class _CharT, class _Alloc>
|
||||
class _Rope_iterator;
|
||||
|
|
|
@ -982,6 +982,9 @@ _GLIBCXX_END_NAMESPACE_VERSION
|
|||
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/// Explicit specialization of std::hash for __gnu_cxx::throw_value_limit.
|
||||
template<>
|
||||
struct hash<__gnu_cxx::throw_value_limit>
|
||||
|
@ -1013,6 +1016,8 @@ namespace std _GLIBCXX_VISIBILITY(default)
|
|||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
} // end namespace std
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2594,7 +2594,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
template<typename _Functor, typename... _ArgTypes>
|
||||
struct result_of<_Functor(_ArgTypes...)>
|
||||
: public __invoke_result<_Functor, _ArgTypes...>
|
||||
{ };
|
||||
{ } _GLIBCXX17_DEPRECATED_SUGGEST("std::invoke_result");
|
||||
|
||||
#if __cplusplus >= 201402L
|
||||
/// Alias template for aligned_storage
|
||||
|
|
|
@ -264,6 +264,10 @@ namespace tr1
|
|||
typedef void type;
|
||||
};
|
||||
|
||||
// Ignore warnings about std::unary_function and std::binary_function.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/// Determines if the type _Tp derives from unary_function.
|
||||
template<typename _Tp>
|
||||
struct _Derives_from_unary_function : __sfinae_types
|
||||
|
@ -2089,6 +2093,7 @@ namespace tr1
|
|||
typedef _Res (*_Invoker_type)(const _Any_data&, _ArgTypes...);
|
||||
_Invoker_type _M_invoker;
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
template<typename _Res, typename... _ArgTypes>
|
||||
function<_Res(_ArgTypes...)>::
|
||||
|
|
|
@ -38,6 +38,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
|
||||
namespace tr1
|
||||
{
|
||||
// Ignore warnings about std::unary_function and std::binary_function.
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
||||
/// Class template hash.
|
||||
// Declaration of default hash functor std::tr1::hash. The types for
|
||||
// which std::tr1::hash<T> is well-defined is in clause 6.3.3. of the PDTR.
|
||||
|
@ -56,6 +60,7 @@ namespace tr1
|
|||
operator()(_Tp* __p) const
|
||||
{ return reinterpret_cast<size_t>(__p); }
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
/// Explicit specializations for integer types.
|
||||
#define _TR1_hashtable_define_trivial_hash(_Tp) \
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
// 20.3.6 Binders
|
||||
|
||||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
#include <functional>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-add-options using-deprecated }
|
||||
|
||||
// 20.3.6 Binders
|
||||
|
|
|
@ -67,10 +67,12 @@ static_assert(std::bit_or<void>()(1,2)==3, "");
|
|||
static_assert(std::bit_xor<void>()(1,1)==0, "");
|
||||
static_assert(std::bit_not<void>()(std::bit_not<void>()(0))==0, "");
|
||||
|
||||
static_assert(std::unary_negate<std::logical_not<int>>
|
||||
(std::logical_not<int>())(1), "");
|
||||
static_assert(std::not1(std::logical_not<int>())(1), "");
|
||||
static_assert(std::unary_negate< // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
std::logical_not<int>
|
||||
>(std::logical_not<int>())(1), "");
|
||||
static_assert(std::not1(std::logical_not<int>())(1), ""); // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
|
||||
static_assert(std::binary_negate<std::logical_and<int>>
|
||||
(std::logical_and<int>())(0,0), "");
|
||||
static_assert(std::not2(std::logical_and<int>())(0,0), "");
|
||||
static_assert(std::binary_negate< // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
std::logical_and<int>
|
||||
>(std::logical_and<int>())(0,0), "");
|
||||
static_assert(std::not2(std::logical_and<int>())(0,0), ""); // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-do run { target c++11 } }
|
||||
// { dg-do run }
|
||||
|
||||
#include <memory>
|
||||
#include <testsuite_hooks.h>
|
||||
|
@ -24,7 +24,7 @@ void
|
|||
test01()
|
||||
{
|
||||
int a[2];
|
||||
auto it = std::raw_storage_iterator<int*, int>(a);
|
||||
std::raw_storage_iterator<int*, int> it(a); // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
VERIFY( it.base() == a );
|
||||
VERIFY( (++it).base() == a+1 );
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ test01()
|
|||
{
|
||||
char buf[sizeof(MoveOnly)*2];
|
||||
MoveOnly* addr = (MoveOnly*)buf;
|
||||
std::raw_storage_iterator<MoveOnly*, MoveOnly> iter(addr);
|
||||
std::raw_storage_iterator<MoveOnly*, MoveOnly> iter(addr); // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
*iter++ = MoveOnly{1};
|
||||
*iter++ = MoveOnly{2};
|
||||
VERIFY( addr[0].i == 1 );
|
||||
|
|
|
@ -29,8 +29,8 @@ void test01()
|
|||
|
||||
// Check for required base class.
|
||||
long l;
|
||||
typedef raw_storage_iterator<long*, long> test_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator;
|
||||
typedef raw_storage_iterator<long*, long> test_iterator; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
test_iterator rs_it(&l);
|
||||
base_iterator* base __attribute__((unused)) = &rs_it;
|
||||
}
|
||||
|
|
|
@ -22,4 +22,4 @@
|
|||
|
||||
#include <memory>
|
||||
|
||||
template class std::raw_storage_iterator<int*, int>;
|
||||
template class std::raw_storage_iterator<int*, int>; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
|
|
|
@ -27,7 +27,7 @@ void test01()
|
|||
using namespace std;
|
||||
|
||||
// Check for required typedefs
|
||||
typedef raw_storage_iterator<long*, long> test_iterator;
|
||||
typedef raw_storage_iterator<long*, long> test_iterator; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
typedef test_iterator::value_type value_type;
|
||||
typedef test_iterator::difference_type difference_type;
|
||||
typedef test_iterator::pointer pointer;
|
||||
|
|
|
@ -28,12 +28,12 @@ struct test_type
|
|||
int cmember2(char)const;
|
||||
};
|
||||
|
||||
struct functor1 : public std::unary_function<int, double>
|
||||
struct functor1 : public std::unary_function<int, double> // { dg-warning "is deprecated" }
|
||||
{
|
||||
double operator()(int) const;
|
||||
};
|
||||
|
||||
struct functor2 : public std::binary_function<int, char, double>
|
||||
struct functor2 : public std::binary_function<int, char, double> // { dg-warning "is deprecated" }
|
||||
{
|
||||
double operator()(int, char) const;
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
// { dg-skip-if "result_type removed for C++20" { c++2a } }
|
||||
|
||||
// Copyright (C) 2008-2022 Free Software Foundation, Inc.
|
||||
//
|
||||
|
@ -21,6 +21,72 @@
|
|||
#include <functional>
|
||||
#include <type_traits>
|
||||
|
||||
namespace __gnu_test
|
||||
{
|
||||
|
||||
template<typename T> using void_t = void;
|
||||
|
||||
struct none;
|
||||
|
||||
#if __cplusplus <= 201703L
|
||||
// For C++11/14/17 if the nested type is not found, require
|
||||
// that the test used 'none' as the expected type.
|
||||
template<typename U> using not_found = std::is_same<U, none>;
|
||||
// A nested type needs to match the expected type.
|
||||
template<typename U, typename V> using found = std::is_same<U, V>;
|
||||
#else
|
||||
// For C++20 the nested type should always be not found.
|
||||
template<typename U> using not_found = std::true_type;
|
||||
// Any nested type is bad.
|
||||
template<typename U, typename V> using found = std::false_type;
|
||||
#endif
|
||||
|
||||
template<typename T, typename U, typename = void>
|
||||
struct check_result_type
|
||||
: not_found<U>
|
||||
{ };
|
||||
|
||||
// Matches when reference_wrapper<T>::result_type exists
|
||||
template<typename T, typename U>
|
||||
struct check_result_type<T, U, void_t<typename std::reference_wrapper<T>::result_type>>
|
||||
: found<U, typename std::reference_wrapper<T>::result_type>
|
||||
{ };
|
||||
|
||||
template<typename T, typename U, typename = void>
|
||||
struct check_arg_type
|
||||
: not_found<U>
|
||||
{ };
|
||||
|
||||
// Matches when reference_wrapper<T>::argument_type exists
|
||||
template<typename T, typename U>
|
||||
struct check_arg_type<T, U, void_t<typename std::reference_wrapper<T>::argument_type>>
|
||||
: found<U, typename std::reference_wrapper<T>::argument_type>
|
||||
{ };
|
||||
|
||||
template<typename T, typename U, typename = void>
|
||||
struct check_first_arg_type
|
||||
: not_found<U>
|
||||
{ };
|
||||
|
||||
// Matches when reference_wrapper<T>::first_argument_type exists
|
||||
template<typename T, typename U>
|
||||
struct check_first_arg_type<T, U, void_t<typename std::reference_wrapper<T>::first_argument_type>>
|
||||
: found<U, typename std::reference_wrapper<T>::first_argument_type>
|
||||
{ };
|
||||
|
||||
template<typename T, typename U, typename = void>
|
||||
struct check_second_arg_type
|
||||
: not_found<U>
|
||||
{ };
|
||||
|
||||
// Matches when reference_wrapper<T>::second_argument_type exists
|
||||
template<typename T, typename U>
|
||||
struct check_second_arg_type<T, U, void_t<typename std::reference_wrapper<T>::second_argument_type>>
|
||||
: found<U, typename std::reference_wrapper<T>::second_argument_type>
|
||||
{ };
|
||||
|
||||
} // namespace __gnu_test
|
||||
|
||||
struct X {};
|
||||
|
||||
struct int_result_type { typedef int result_type; };
|
||||
|
@ -38,22 +104,66 @@ struct derives_unary_binary
|
|||
|
||||
void test01()
|
||||
{
|
||||
using std::reference_wrapper;
|
||||
using std::is_same;
|
||||
using __gnu_test::check_result_type;
|
||||
using __gnu_test::none;
|
||||
|
||||
// Check result_type typedef
|
||||
static_assert( is_same<reference_wrapper<int_result_type>::result_type, int>::value, "has result_type" );
|
||||
static_assert( is_same<reference_wrapper<derives_unary>::result_type, int>::value, "has result_type" );
|
||||
static_assert( is_same<reference_wrapper<derives_binary>::result_type, int>::value, "has result_type" );
|
||||
static_assert( is_same<reference_wrapper<derives_unary_binary>::result_type, int>::value, "has result_type" );
|
||||
static_assert( is_same<reference_wrapper<int(void)>::result_type, int>::value, "has result_type" );
|
||||
static_assert( is_same<reference_wrapper<int(*)(void)>::result_type, int>::value, "has result_type" );
|
||||
static_assert( is_same<reference_wrapper<int (::X::*)()>::result_type, int>::value, "has result_type" );
|
||||
static_assert( is_same<reference_wrapper<int (::X::*)(float)>::result_type, int>::value, "has result_type" );
|
||||
static_assert( check_result_type<int_result_type, int>::value, "has result_type" );
|
||||
static_assert( check_result_type<derives_unary, int>::value, "has result_type" );
|
||||
static_assert( check_result_type<derives_binary, int>::value, "has result_type" );
|
||||
static_assert( check_result_type<derives_unary_binary, int>::value, "has result_type" );
|
||||
static_assert( check_result_type<int(void), int>::value, "has result_type" );
|
||||
static_assert( check_result_type<int(*)(void), int>::value, "has result_type" );
|
||||
static_assert( check_result_type<int (::X::*)(), int>::value, "has result_type" );
|
||||
static_assert( check_result_type<int (::X::*)(float), int>::value, "has result_type" );
|
||||
}
|
||||
|
||||
void test02()
|
||||
{
|
||||
using __gnu_test::check_arg_type;
|
||||
using __gnu_test::check_first_arg_type;
|
||||
using __gnu_test::check_second_arg_type;
|
||||
using __gnu_test::none;
|
||||
|
||||
// Check argument_type typedef
|
||||
static_assert( check_arg_type<int_result_type, none>::value, "" );
|
||||
static_assert( check_arg_type<derives_unary, int>::value, "" );
|
||||
static_assert( check_arg_type<derives_binary, none>::value, "" );
|
||||
static_assert( check_arg_type<derives_unary_binary, int>::value, "" );
|
||||
static_assert( check_arg_type<int(void), none>::value, "" );
|
||||
static_assert( check_arg_type<int(*)(void), none>::value, "" );
|
||||
static_assert( check_arg_type<int (::X::*)(), X*>::value, "" );
|
||||
static_assert( check_arg_type<int (::X::*)() const, const X*>::value, "" );
|
||||
static_assert( check_arg_type<int (::X::*)(float), none>::value, "" );
|
||||
static_assert( check_arg_type<int (::X::*)(char, char), none>::value, "" );
|
||||
|
||||
// Check first_argument_type typedef
|
||||
static_assert( check_first_arg_type<int_result_type, none>::value, "" );
|
||||
static_assert( check_first_arg_type<derives_unary, none>::value, "" );
|
||||
static_assert( check_first_arg_type<derives_binary, int>::value, "" );
|
||||
static_assert( check_first_arg_type<derives_unary_binary, int>::value, "" );
|
||||
static_assert( check_first_arg_type<int(void), none>::value, "" );
|
||||
static_assert( check_first_arg_type<int(*)(void), none>::value, "" );
|
||||
static_assert( check_first_arg_type<int (::X::*)(), none>::value, "" );
|
||||
static_assert( check_first_arg_type<int (::X::*)(float), X*>::value, "" );
|
||||
static_assert( check_first_arg_type<int (::X::*)(float) const, const X*>::value, "" );
|
||||
static_assert( check_first_arg_type<int (::X::*)(char, char), none>::value, "" );
|
||||
|
||||
// Check second_argument_type typedef
|
||||
static_assert( check_second_arg_type<int_result_type, none>::value, "" );
|
||||
static_assert( check_second_arg_type<derives_unary, none>::value, "" );
|
||||
static_assert( check_second_arg_type<derives_binary, float>::value, "" );
|
||||
static_assert( check_second_arg_type<derives_unary_binary, float>::value, "" );
|
||||
static_assert( check_second_arg_type<int(void), none>::value, "" );
|
||||
static_assert( check_second_arg_type<int(*)(void), none>::value, "" );
|
||||
static_assert( check_second_arg_type<int (::X::*)(), none>::value, "" );
|
||||
static_assert( check_second_arg_type<int (::X::*)(float), float>::value, "" );
|
||||
static_assert( check_second_arg_type<int (::X::*)(float) const, float>::value, "" );
|
||||
static_assert( check_second_arg_type<int (::X::*)(char, char), none>::value, "" );
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ struct A { };
|
|||
namespace std
|
||||
{
|
||||
template<>
|
||||
struct less<A*> : binary_function<A*,A*,bool>
|
||||
struct less<A*>
|
||||
{
|
||||
static int count;
|
||||
bool operator()(A* l, A* r) { ++count; return l < r; }
|
||||
|
|
|
@ -27,7 +27,7 @@ struct junk { char j[12]; };
|
|||
int main(void)
|
||||
{
|
||||
typedef std::pair<junk*, std::ptrdiff_t> pair_type;
|
||||
pair_type results = std::get_temporary_buffer<junk>(5);
|
||||
pair_type results = std::get_temporary_buffer<junk>(5); // { dg-warning "deprecated" "" { target c++14 } }
|
||||
|
||||
if (results.second != 0)
|
||||
{
|
||||
|
|
|
@ -22,7 +22,14 @@
|
|||
#include <string>
|
||||
#include <iterator>
|
||||
|
||||
struct hate_T_iterator : std::iterator<std::forward_iterator_tag, char> {
|
||||
struct hate_T_iterator {
|
||||
|
||||
typedef std::forward_iterator_tag iterator_category;
|
||||
typedef char value_type;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
typedef char* pointer;
|
||||
typedef char& reference;
|
||||
|
||||
explicit hate_T_iterator(char* p) : p(p) {}
|
||||
char* p;
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ void test01()
|
|||
// Check for required base class.
|
||||
list<int> l;
|
||||
typedef back_insert_iterator<list<int> > test_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
test_iterator r_it(l);
|
||||
base_iterator* base __attribute__((unused)) = &r_it;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ void test01()
|
|||
// Check for required base class.
|
||||
list<int> l;
|
||||
typedef front_insert_iterator<list<int> > test_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
test_iterator r_it(l);
|
||||
base_iterator* base __attribute__((unused)) = &r_it;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ void test01()
|
|||
list<int>::iterator li = l.begin();
|
||||
|
||||
typedef insert_iterator<list<int> > test_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
test_iterator r_it(l, li);
|
||||
base_iterator* base __attribute__((unused)) = &r_it;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ void test01()
|
|||
|
||||
// Check for required base class.
|
||||
typedef istream_iterator<long> test_iterator;
|
||||
typedef iterator<input_iterator_tag, long, ptrdiff_t, const long*,
|
||||
typedef iterator<input_iterator_tag, long, ptrdiff_t, const long*, // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
const long&> base_iterator;
|
||||
test_iterator r_it;
|
||||
base_iterator* base __attribute__((unused)) = &r_it;
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
|
||||
typedef std::input_iterator_tag category;
|
||||
typedef std::char_traits<char>::off_type off_type;
|
||||
typedef std::iterator<category, char, off_type, char*, char> good;
|
||||
typedef std::iterator<category, char, off_type, char*, char&> bad;
|
||||
typedef std::iterator<category, char, off_type, char*, char> good; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
typedef std::iterator<category, char, off_type, char*, char&> bad; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
|
||||
bool check(good&) { return true; }
|
||||
void check(bad&) { }
|
||||
|
|
|
@ -32,8 +32,9 @@ void test01()
|
|||
typedef istreambuf_iterator<char> test_iterator;
|
||||
typedef char_traits<char>::off_type off_type;
|
||||
|
||||
// This is the base class required since LWG 445, which differs from C++03:
|
||||
typedef iterator<input_iterator_tag, char, off_type, char*, char>
|
||||
// This is the base class required since LWG 445, which differs from C++03.
|
||||
// We derive from this unconditionally, then override 'reference' for C++03.
|
||||
typedef iterator<input_iterator_tag, char, off_type, char*, char> // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
base_iterator;
|
||||
|
||||
istringstream isstream("this tag");
|
||||
|
|
|
@ -30,7 +30,7 @@ void test01()
|
|||
|
||||
// Check for required base class.
|
||||
typedef ostream_iterator<long> test_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
ostringstream osstream("this tag");
|
||||
test_iterator r_it(osstream);
|
||||
base_iterator* base __attribute__((unused)) = &r_it;
|
||||
|
|
|
@ -30,7 +30,7 @@ void test01()
|
|||
|
||||
// Check for required base class.
|
||||
typedef ostreambuf_iterator<char> test_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator;
|
||||
typedef iterator<output_iterator_tag, void, void, void, void> base_iterator; // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
ostringstream osstream("this tag");
|
||||
test_iterator r_it(osstream);
|
||||
base_iterator* base __attribute__((unused)) = &r_it;
|
||||
|
|
|
@ -29,7 +29,7 @@ void test01()
|
|||
// Check for required base class.
|
||||
long l;
|
||||
typedef reverse_iterator<long*> test_iterator;
|
||||
typedef iterator<iterator_traits<long*>::iterator_category,
|
||||
typedef iterator<iterator_traits<long*>::iterator_category, // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
iterator_traits<long*>::value_type,
|
||||
iterator_traits<long*>::difference_type,
|
||||
iterator_traits<long*>::pointer,
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template bool all_of(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -32,4 +33,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template bool all_of(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template bool any_of(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -32,4 +33,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template bool any_of(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include <testsuite_hooks.h>
|
||||
|
||||
class Counting_output_iterator
|
||||
: public std::iterator< std::output_iterator_tag, void, void, void, void >
|
||||
: public std::iterator< std::output_iterator_tag, void, void, void, void > // { dg-warning "is deprecated" "" { target c++17 } }
|
||||
{
|
||||
std::size_t c;
|
||||
public:
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-24 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -32,6 +33,6 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type copy_if(iterator_type, iterator_type,
|
||||
template iterator_type copy_if(iterator_type, iterator_type,
|
||||
iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-24 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -31,6 +32,6 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type copy_if(iterator_type, iterator_type,
|
||||
template iterator_type copy_if(iterator_type, iterator_type,
|
||||
iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -34,4 +35,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template difference_type count_if(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template difference_type count_if(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -38,4 +39,4 @@ namespace std
|
|||
template iterator_type find_end(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type,
|
||||
predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// { dg-do compile }
|
||||
// { dg-additional-options "-Wno-deprecated-declarations" { target c++11 } }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
|
@ -37,4 +38,4 @@ namespace std
|
|||
template iterator_type find_end(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type,
|
||||
predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// { dg-do compile }
|
||||
// { dg-additional-options "-Wno-deprecated-declarations" { target c++11 } }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
|
@ -38,4 +39,4 @@ namespace std
|
|||
template iterator_type find_first_of(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type,
|
||||
predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// { dg-do compile }
|
||||
// { dg-additional-options "-Wno-deprecated-declarations" { target c++11 } }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
|
@ -37,4 +38,4 @@ namespace std
|
|||
template iterator_type find_first_of(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type,
|
||||
predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type find_if(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -32,4 +33,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type find_if(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type find_if_not(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -32,4 +33,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type find_if_not(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -32,6 +33,6 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, void> function_type;
|
||||
|
||||
template function_type for_each(iterator_type, iterator_type,
|
||||
template function_type for_each(iterator_type, iterator_type,
|
||||
function_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -31,6 +32,6 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, void> function_type;
|
||||
|
||||
template function_type for_each(iterator_type, iterator_type,
|
||||
template function_type for_each(iterator_type, iterator_type,
|
||||
function_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-27 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template bool is_partitioned(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-27 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -32,4 +33,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template bool is_partitioned(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2011-01-13 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2011-01-13 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
|
|
@ -24,8 +24,11 @@
|
|||
#include <testsuite_hooks.h>
|
||||
|
||||
struct compare_counter
|
||||
: std::binary_function<int, int, bool>
|
||||
{
|
||||
typedef int result_type;
|
||||
typedef int first_argument_type;
|
||||
typedef bool second_argument_type;
|
||||
|
||||
static int count;
|
||||
|
||||
bool operator()(int a, int b) const
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template bool none_of(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -32,4 +33,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template bool none_of(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -34,4 +35,4 @@ namespace std
|
|||
|
||||
template iterator_type partition(iterator_type, iterator_type,
|
||||
predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
|
||||
template iterator_type partition(iterator_type, iterator_type,
|
||||
predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-26 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -35,4 +36,4 @@ namespace std
|
|||
template pair<iterator_type, iterator_type>
|
||||
partition_copy(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-26 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -32,6 +33,6 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template pair<iterator_type, iterator_type>
|
||||
partition_copy(iterator_type, iterator_type,
|
||||
partition_copy(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-28 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type partition_point(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
// 2008-06-28 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
@ -32,4 +33,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type partition_point(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
// { dg-add-options using-deprecated }
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// { dg-do compile }
|
||||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-add-options using-deprecated }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -32,6 +33,6 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type remove_copy_if(iterator_type, iterator_type,
|
||||
template iterator_type remove_copy_if(iterator_type, iterator_type,
|
||||
iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -31,6 +32,6 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type remove_copy_if(iterator_type, iterator_type,
|
||||
template iterator_type remove_copy_if(iterator_type, iterator_type,
|
||||
iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -32,6 +33,6 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type remove_if(iterator_type, iterator_type,
|
||||
template iterator_type remove_if(iterator_type, iterator_type,
|
||||
predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -31,6 +32,6 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type remove_if(iterator_type, iterator_type,
|
||||
template iterator_type remove_if(iterator_type, iterator_type,
|
||||
predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -32,7 +33,7 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type replace_copy_if(iterator_type, iterator_type,
|
||||
template iterator_type replace_copy_if(iterator_type, iterator_type,
|
||||
iterator_type, predicate_type,
|
||||
const value_type&);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -31,7 +32,7 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type replace_copy_if(iterator_type, iterator_type,
|
||||
template iterator_type replace_copy_if(iterator_type, iterator_type,
|
||||
iterator_type, predicate_type,
|
||||
const value_type&);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -34,4 +35,4 @@ namespace std
|
|||
|
||||
template void replace_if(iterator_type, iterator_type, predicate_type,
|
||||
const value_type&);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
|
||||
template void replace_if(iterator_type, iterator_type, predicate_type,
|
||||
const value_type&);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -32,9 +33,9 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_binary_function<value_type, value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type search(iterator_type, iterator_type,
|
||||
template iterator_type search(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type);
|
||||
|
||||
template iterator_type search(iterator_type, iterator_type,
|
||||
template iterator_type search(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -31,9 +32,9 @@ namespace std
|
|||
typedef value_type* iterator_type;
|
||||
typedef std::pointer_to_binary_function<value_type, value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type search(iterator_type, iterator_type,
|
||||
template iterator_type search(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type);
|
||||
|
||||
template iterator_type search(iterator_type, iterator_type,
|
||||
template iterator_type search(iterator_type, iterator_type,
|
||||
iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -33,9 +34,9 @@ namespace std
|
|||
typedef std::size_t size_type;
|
||||
typedef std::pointer_to_binary_function<value_type, value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type search_n(iterator_type, iterator_type,
|
||||
template iterator_type search_n(iterator_type, iterator_type,
|
||||
size_type, const value_type&);
|
||||
|
||||
template iterator_type search_n(iterator_type, iterator_type,
|
||||
template iterator_type search_n(iterator_type, iterator_type,
|
||||
size_type, const value_type&, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -32,9 +33,9 @@ namespace std
|
|||
typedef std::size_t size_type;
|
||||
typedef std::pointer_to_binary_function<value_type, value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type search_n(iterator_type, iterator_type,
|
||||
template iterator_type search_n(iterator_type, iterator_type,
|
||||
size_type, const value_type&);
|
||||
|
||||
template iterator_type search_n(iterator_type, iterator_type,
|
||||
template iterator_type search_n(iterator_type, iterator_type,
|
||||
size_type, const value_type&, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -33,4 +34,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type stable_partition(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -32,4 +33,4 @@ namespace std
|
|||
typedef std::pointer_to_unary_function<value_type, bool> predicate_type;
|
||||
|
||||
template iterator_type stable_partition(iterator_type, iterator_type, predicate_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -37,4 +38,4 @@ namespace std
|
|||
operator1_type);
|
||||
template iterator_type transform(iterator_type, iterator_type, iterator_type,
|
||||
iterator_type, operator2_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
@ -36,4 +37,4 @@ namespace std
|
|||
operator1_type);
|
||||
template iterator_type transform(iterator_type, iterator_type, iterator_type,
|
||||
iterator_type, operator2_type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -178,7 +178,7 @@ void test01()
|
|||
{
|
||||
transform(tmpstr.begin(), tmpstr.end(),
|
||||
back_inserter(str1),
|
||||
bind1st(std::mem_fun(&std::wios::widen), &stream));
|
||||
bind1st(std::mem_fun(&std::wios::widen), &stream)); // { dg-warning "is deprecated" "" { target c++11 } }
|
||||
}
|
||||
|
||||
fbuf1.sputn(str1.data(), str1.size());
|
||||
|
|
|
@ -61,7 +61,7 @@ main()
|
|||
|
||||
// Now we erase all values that satisfy some predicate, in this case
|
||||
// one that returns true for all those larger than 500.
|
||||
p.erase_if(bind1st(less<int>(), 500));
|
||||
p.erase_if(bind1st(less<int>(), 500)); // { dg-warning "is deprecated" "" { target c++11 } }
|
||||
|
||||
// The largest value should be now 500.
|
||||
assert(p.top() == 500);
|
||||
|
|
|
@ -101,7 +101,7 @@ main()
|
|||
cout <<* it << endl;
|
||||
|
||||
// Now split the queues.
|
||||
even_p.split(bind2nd(modulus<int>(), 2), odd_p);
|
||||
even_p.split(bind2nd(modulus<int>(), 2), odd_p); // { dg-warning "is deprecated" "" { target c++11 } }
|
||||
|
||||
// Check that each one contains the appropriate 10 values.
|
||||
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
|
||||
// 2.1 reference wrappers
|
||||
#include <tr1/functional>
|
||||
#include <tr1/type_traits>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-options "-Wno-deprecated-declarations" }
|
||||
// { dg-do compile }
|
||||
|
||||
// Copyright (C) 2007-2022 Free Software Foundation, Inc.
|
||||
|
|
|
@ -48,12 +48,14 @@ namespace __gnu_pbds
|
|||
{
|
||||
template<typename T>
|
||||
struct regression_test_erase_if_fn
|
||||
: public std::unary_function<T, bool>
|
||||
{
|
||||
private:
|
||||
typedef const T& const_reference;
|
||||
|
||||
public:
|
||||
typedef bool result_type;
|
||||
typedef T argument_type;
|
||||
|
||||
bool
|
||||
operator()(const_reference r_t) const
|
||||
{
|
||||
|
@ -64,7 +66,6 @@ namespace __gnu_pbds
|
|||
|
||||
template<typename Hd, class Tl>
|
||||
struct regression_test_erase_if_fn<std::pair<Hd, Tl> >
|
||||
: public std::unary_function<std::pair<Hd, Tl>, bool>
|
||||
{
|
||||
private:
|
||||
typedef const std::pair<Hd, Tl>& const_reference;
|
||||
|
@ -72,6 +73,9 @@ namespace __gnu_pbds
|
|||
typedef regression_test_erase_if_fn<Tl> tl_erase_if_fn;
|
||||
|
||||
public:
|
||||
typedef bool result_type;
|
||||
typedef std::pair<Hd, Tl> argument_type;
|
||||
|
||||
bool
|
||||
operator()(const_reference r_t) const
|
||||
{
|
||||
|
|
|
@ -122,13 +122,18 @@ namespace __gnu_test
|
|||
*/
|
||||
template<class T>
|
||||
struct output_iterator_wrapper
|
||||
: public std::iterator<std::output_iterator_tag, void, std::ptrdiff_t, void, void>
|
||||
{
|
||||
protected:
|
||||
output_iterator_wrapper() : ptr(0), SharedInfo(0)
|
||||
{ }
|
||||
|
||||
public:
|
||||
typedef std::output_iterator_tag iterator_category;
|
||||
typedef T value_type;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
typedef T* pointer;
|
||||
typedef T& reference;
|
||||
|
||||
typedef OutputContainer<T> ContainerType;
|
||||
T* ptr;
|
||||
ContainerType* SharedInfo;
|
||||
|
@ -209,8 +214,6 @@ namespace __gnu_test
|
|||
*/
|
||||
template<class T>
|
||||
class input_iterator_wrapper
|
||||
: public std::iterator<std::input_iterator_tag, typename remove_cv<T>::type,
|
||||
std::ptrdiff_t, T*, T&>
|
||||
{
|
||||
struct post_inc_proxy
|
||||
{
|
||||
|
@ -228,6 +231,12 @@ namespace __gnu_test
|
|||
{ }
|
||||
|
||||
public:
|
||||
typedef std::input_iterator_tag iterator_category;
|
||||
typedef typename remove_cv<T>::type value_type;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
typedef T* pointer;
|
||||
typedef T& reference;
|
||||
|
||||
typedef BoundsContainer<T> ContainerType;
|
||||
T* ptr;
|
||||
ContainerType* SharedInfo;
|
||||
|
|
Loading…
Add table
Reference in a new issue