14d5abbe8Smrg // Default predicates for internal use -*- C++ -*- 24d5abbe8Smrg 3*b1e83836Smrg // Copyright (C) 2013-2022 Free Software Foundation, Inc. 44d5abbe8Smrg // 54d5abbe8Smrg // This file is part of the GNU ISO C++ Library. This library is free 64d5abbe8Smrg // software; you can redistribute it and/or modify it under the 74d5abbe8Smrg // terms of the GNU General Public License as published by the 84d5abbe8Smrg // Free Software Foundation; either version 3, or (at your option) 94d5abbe8Smrg // any later version. 104d5abbe8Smrg 114d5abbe8Smrg // This library is distributed in the hope that it will be useful, 124d5abbe8Smrg // but WITHOUT ANY WARRANTY; without even the implied warranty of 134d5abbe8Smrg // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 144d5abbe8Smrg // GNU General Public License for more details. 154d5abbe8Smrg 164d5abbe8Smrg // Under Section 7 of GPL version 3, you are granted additional 174d5abbe8Smrg // permissions described in the GCC Runtime Library Exception, version 184d5abbe8Smrg // 3.1, as published by the Free Software Foundation. 194d5abbe8Smrg 204d5abbe8Smrg // You should have received a copy of the GNU General Public License and 214d5abbe8Smrg // a copy of the GCC Runtime Library Exception along with this program; 224d5abbe8Smrg // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 234d5abbe8Smrg // <http://www.gnu.org/licenses/>. 244d5abbe8Smrg 254d5abbe8Smrg /** @file predefined_ops.h 264d5abbe8Smrg * This is an internal header file, included by other library headers. 273f4ceed9Smrg * You should not attempt to use it directly. @headername{algorithm} 284d5abbe8Smrg */ 294d5abbe8Smrg 304d5abbe8Smrg #ifndef _GLIBCXX_PREDEFINED_OPS_H 314d5abbe8Smrg #define _GLIBCXX_PREDEFINED_OPS_H 1 324d5abbe8Smrg 33*b1e83836Smrg #include <bits/move.h> 34*b1e83836Smrg 354d5abbe8Smrg namespace __gnu_cxx 364d5abbe8Smrg { 374d5abbe8Smrg namespace __ops 384d5abbe8Smrg { 394d5abbe8Smrg struct _Iter_less_iter 404d5abbe8Smrg { 414d5abbe8Smrg template<typename _Iterator1, typename _Iterator2> 424d5abbe8Smrg _GLIBCXX14_CONSTEXPR 434d5abbe8Smrg bool operator_Iter_less_iter444d5abbe8Smrg operator()(_Iterator1 __it1, _Iterator2 __it2) const 454d5abbe8Smrg { return *__it1 < *__it2; } 464d5abbe8Smrg }; 473f4ceed9Smrg 484d5abbe8Smrg _GLIBCXX14_CONSTEXPR 494d5abbe8Smrg inline _Iter_less_iter __iter_less_iter()504d5abbe8Smrg __iter_less_iter() 514d5abbe8Smrg { return _Iter_less_iter(); } 524d5abbe8Smrg 534d5abbe8Smrg struct _Iter_less_val 544d5abbe8Smrg { 55b17d1066Smrg #if __cplusplus >= 201103L 56b17d1066Smrg constexpr _Iter_less_val() = default; 57b17d1066Smrg #else 58b17d1066Smrg _Iter_less_val() { } 59b17d1066Smrg #endif 60b17d1066Smrg 61fb8a8121Smrg _GLIBCXX20_CONSTEXPR 62b17d1066Smrg explicit _Iter_less_val_Iter_less_val63b17d1066Smrg _Iter_less_val(_Iter_less_iter) { } 64b17d1066Smrg 654d5abbe8Smrg template<typename _Iterator, typename _Value> 66fb8a8121Smrg _GLIBCXX20_CONSTEXPR 674d5abbe8Smrg bool operator_Iter_less_val684d5abbe8Smrg operator()(_Iterator __it, _Value& __val) const 694d5abbe8Smrg { return *__it < __val; } 704d5abbe8Smrg }; 714d5abbe8Smrg 72fb8a8121Smrg _GLIBCXX20_CONSTEXPR 734d5abbe8Smrg inline _Iter_less_val __iter_less_val()744d5abbe8Smrg __iter_less_val() 754d5abbe8Smrg { return _Iter_less_val(); } 764d5abbe8Smrg 77fb8a8121Smrg _GLIBCXX20_CONSTEXPR 784d5abbe8Smrg inline _Iter_less_val __iter_comp_val(_Iter_less_iter)794d5abbe8Smrg __iter_comp_val(_Iter_less_iter) 804d5abbe8Smrg { return _Iter_less_val(); } 814d5abbe8Smrg 824d5abbe8Smrg struct _Val_less_iter 834d5abbe8Smrg { 84b17d1066Smrg #if __cplusplus >= 201103L 85b17d1066Smrg constexpr _Val_less_iter() = default; 86b17d1066Smrg #else 87b17d1066Smrg _Val_less_iter() { } 88b17d1066Smrg #endif 89b17d1066Smrg 90fb8a8121Smrg _GLIBCXX20_CONSTEXPR 91b17d1066Smrg explicit _Val_less_iter_Val_less_iter92b17d1066Smrg _Val_less_iter(_Iter_less_iter) { } 93b17d1066Smrg 944d5abbe8Smrg template<typename _Value, typename _Iterator> 95fb8a8121Smrg _GLIBCXX20_CONSTEXPR 964d5abbe8Smrg bool operator_Val_less_iter974d5abbe8Smrg operator()(_Value& __val, _Iterator __it) const 984d5abbe8Smrg { return __val < *__it; } 994d5abbe8Smrg }; 1004d5abbe8Smrg 101fb8a8121Smrg _GLIBCXX20_CONSTEXPR 1024d5abbe8Smrg inline _Val_less_iter __val_less_iter()1034d5abbe8Smrg __val_less_iter() 1044d5abbe8Smrg { return _Val_less_iter(); } 1054d5abbe8Smrg 106fb8a8121Smrg _GLIBCXX20_CONSTEXPR 1074d5abbe8Smrg inline _Val_less_iter __val_comp_iter(_Iter_less_iter)1084d5abbe8Smrg __val_comp_iter(_Iter_less_iter) 1094d5abbe8Smrg { return _Val_less_iter(); } 1104d5abbe8Smrg 1114d5abbe8Smrg struct _Iter_equal_to_iter 1124d5abbe8Smrg { 1134d5abbe8Smrg template<typename _Iterator1, typename _Iterator2> 114fb8a8121Smrg _GLIBCXX20_CONSTEXPR 1154d5abbe8Smrg bool operator_Iter_equal_to_iter1164d5abbe8Smrg operator()(_Iterator1 __it1, _Iterator2 __it2) const 1174d5abbe8Smrg { return *__it1 == *__it2; } 1184d5abbe8Smrg }; 1194d5abbe8Smrg 120fb8a8121Smrg _GLIBCXX20_CONSTEXPR 1214d5abbe8Smrg inline _Iter_equal_to_iter __iter_equal_to_iter()1224d5abbe8Smrg __iter_equal_to_iter() 1234d5abbe8Smrg { return _Iter_equal_to_iter(); } 1244d5abbe8Smrg 1254d5abbe8Smrg struct _Iter_equal_to_val 1264d5abbe8Smrg { 1274d5abbe8Smrg template<typename _Iterator, typename _Value> 128fb8a8121Smrg _GLIBCXX20_CONSTEXPR 1294d5abbe8Smrg bool operator_Iter_equal_to_val1304d5abbe8Smrg operator()(_Iterator __it, _Value& __val) const 1314d5abbe8Smrg { return *__it == __val; } 1324d5abbe8Smrg }; 1334d5abbe8Smrg 134fb8a8121Smrg _GLIBCXX20_CONSTEXPR 1354d5abbe8Smrg inline _Iter_equal_to_val __iter_equal_to_val()1364d5abbe8Smrg __iter_equal_to_val() 1374d5abbe8Smrg { return _Iter_equal_to_val(); } 1384d5abbe8Smrg 139fb8a8121Smrg _GLIBCXX20_CONSTEXPR 1404d5abbe8Smrg inline _Iter_equal_to_val __iter_comp_val(_Iter_equal_to_iter)1414d5abbe8Smrg __iter_comp_val(_Iter_equal_to_iter) 1424d5abbe8Smrg { return _Iter_equal_to_val(); } 1434d5abbe8Smrg 1444d5abbe8Smrg template<typename _Compare> 1454d5abbe8Smrg struct _Iter_comp_iter 1464d5abbe8Smrg { 1474d5abbe8Smrg _Compare _M_comp; 1483f4ceed9Smrg 1493f4ceed9Smrg explicit _GLIBCXX14_CONSTEXPR _Iter_comp_iter_Iter_comp_iter1504d5abbe8Smrg _Iter_comp_iter(_Compare __comp) 151b17d1066Smrg : _M_comp(_GLIBCXX_MOVE(__comp)) 1524d5abbe8Smrg { } 1534d5abbe8Smrg 1544d5abbe8Smrg template<typename _Iterator1, typename _Iterator2> 1554d5abbe8Smrg _GLIBCXX14_CONSTEXPR 1564d5abbe8Smrg bool operator_Iter_comp_iter1574d5abbe8Smrg operator()(_Iterator1 __it1, _Iterator2 __it2) 1584d5abbe8Smrg { return bool(_M_comp(*__it1, *__it2)); } 1594d5abbe8Smrg }; 1604d5abbe8Smrg 1614d5abbe8Smrg template<typename _Compare> 1624d5abbe8Smrg _GLIBCXX14_CONSTEXPR 1634d5abbe8Smrg inline _Iter_comp_iter<_Compare> __iter_comp_iter(_Compare __comp)1644d5abbe8Smrg __iter_comp_iter(_Compare __comp) 165b17d1066Smrg { return _Iter_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); } 1664d5abbe8Smrg 1674d5abbe8Smrg template<typename _Compare> 1684d5abbe8Smrg struct _Iter_comp_val 1694d5abbe8Smrg { 1704d5abbe8Smrg _Compare _M_comp; 1714d5abbe8Smrg 172fb8a8121Smrg _GLIBCXX20_CONSTEXPR 1733f4ceed9Smrg explicit _Iter_comp_val_Iter_comp_val1744d5abbe8Smrg _Iter_comp_val(_Compare __comp) 175b17d1066Smrg : _M_comp(_GLIBCXX_MOVE(__comp)) 1764d5abbe8Smrg { } 1774d5abbe8Smrg 178fb8a8121Smrg _GLIBCXX20_CONSTEXPR 179b17d1066Smrg explicit _Iter_comp_val_Iter_comp_val180b17d1066Smrg _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 181b17d1066Smrg : _M_comp(__comp._M_comp) 182b17d1066Smrg { } 183b17d1066Smrg 184b17d1066Smrg #if __cplusplus >= 201103L 185fb8a8121Smrg _GLIBCXX20_CONSTEXPR 186b17d1066Smrg explicit _Iter_comp_val_Iter_comp_val187b17d1066Smrg _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 188b17d1066Smrg : _M_comp(std::move(__comp._M_comp)) 189b17d1066Smrg { } 190b17d1066Smrg #endif 191b17d1066Smrg 1924d5abbe8Smrg template<typename _Iterator, typename _Value> 193fb8a8121Smrg _GLIBCXX20_CONSTEXPR 1944d5abbe8Smrg bool operator_Iter_comp_val1954d5abbe8Smrg operator()(_Iterator __it, _Value& __val) 1964d5abbe8Smrg { return bool(_M_comp(*__it, __val)); } 1974d5abbe8Smrg }; 1984d5abbe8Smrg 1994d5abbe8Smrg template<typename _Compare> 200fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2014d5abbe8Smrg inline _Iter_comp_val<_Compare> __iter_comp_val(_Compare __comp)2024d5abbe8Smrg __iter_comp_val(_Compare __comp) 203b17d1066Smrg { return _Iter_comp_val<_Compare>(_GLIBCXX_MOVE(__comp)); } 2044d5abbe8Smrg 2054d5abbe8Smrg template<typename _Compare> 206fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2074d5abbe8Smrg inline _Iter_comp_val<_Compare> __iter_comp_val(_Iter_comp_iter<_Compare> __comp)2084d5abbe8Smrg __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 209b17d1066Smrg { return _Iter_comp_val<_Compare>(_GLIBCXX_MOVE(__comp)); } 2104d5abbe8Smrg 2114d5abbe8Smrg template<typename _Compare> 2124d5abbe8Smrg struct _Val_comp_iter 2134d5abbe8Smrg { 2144d5abbe8Smrg _Compare _M_comp; 2154d5abbe8Smrg 216fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2173f4ceed9Smrg explicit _Val_comp_iter_Val_comp_iter2184d5abbe8Smrg _Val_comp_iter(_Compare __comp) 219b17d1066Smrg : _M_comp(_GLIBCXX_MOVE(__comp)) 2204d5abbe8Smrg { } 2214d5abbe8Smrg 222fb8a8121Smrg _GLIBCXX20_CONSTEXPR 223b17d1066Smrg explicit _Val_comp_iter_Val_comp_iter224b17d1066Smrg _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 225b17d1066Smrg : _M_comp(__comp._M_comp) 226b17d1066Smrg { } 227b17d1066Smrg 228b17d1066Smrg #if __cplusplus >= 201103L 229fb8a8121Smrg _GLIBCXX20_CONSTEXPR 230b17d1066Smrg explicit _Val_comp_iter_Val_comp_iter231b17d1066Smrg _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 232b17d1066Smrg : _M_comp(std::move(__comp._M_comp)) 233b17d1066Smrg { } 234b17d1066Smrg #endif 235b17d1066Smrg 2364d5abbe8Smrg template<typename _Value, typename _Iterator> 237fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2384d5abbe8Smrg bool operator_Val_comp_iter2394d5abbe8Smrg operator()(_Value& __val, _Iterator __it) 2404d5abbe8Smrg { return bool(_M_comp(__val, *__it)); } 2414d5abbe8Smrg }; 2424d5abbe8Smrg 2434d5abbe8Smrg template<typename _Compare> 244fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2454d5abbe8Smrg inline _Val_comp_iter<_Compare> __val_comp_iter(_Compare __comp)2464d5abbe8Smrg __val_comp_iter(_Compare __comp) 247b17d1066Smrg { return _Val_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); } 2484d5abbe8Smrg 2494d5abbe8Smrg template<typename _Compare> 250fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2514d5abbe8Smrg inline _Val_comp_iter<_Compare> __val_comp_iter(_Iter_comp_iter<_Compare> __comp)2524d5abbe8Smrg __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 253b17d1066Smrg { return _Val_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); } 2544d5abbe8Smrg 2554d5abbe8Smrg template<typename _Value> 2564d5abbe8Smrg struct _Iter_equals_val 2574d5abbe8Smrg { 2584d5abbe8Smrg _Value& _M_value; 2594d5abbe8Smrg 260fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2613f4ceed9Smrg explicit _Iter_equals_val_Iter_equals_val2624d5abbe8Smrg _Iter_equals_val(_Value& __value) 2634d5abbe8Smrg : _M_value(__value) 2644d5abbe8Smrg { } 2654d5abbe8Smrg 2664d5abbe8Smrg template<typename _Iterator> 267fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2684d5abbe8Smrg bool operator_Iter_equals_val2694d5abbe8Smrg operator()(_Iterator __it) 2704d5abbe8Smrg { return *__it == _M_value; } 2714d5abbe8Smrg }; 2724d5abbe8Smrg 2734d5abbe8Smrg template<typename _Value> 274fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2754d5abbe8Smrg inline _Iter_equals_val<_Value> __iter_equals_val(_Value & __val)2764d5abbe8Smrg __iter_equals_val(_Value& __val) 2774d5abbe8Smrg { return _Iter_equals_val<_Value>(__val); } 2784d5abbe8Smrg 2794d5abbe8Smrg template<typename _Iterator1> 2804d5abbe8Smrg struct _Iter_equals_iter 2814d5abbe8Smrg { 2823f4ceed9Smrg _Iterator1 _M_it1; 2834d5abbe8Smrg 284fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2853f4ceed9Smrg explicit _Iter_equals_iter_Iter_equals_iter2864d5abbe8Smrg _Iter_equals_iter(_Iterator1 __it1) 2873f4ceed9Smrg : _M_it1(__it1) 2884d5abbe8Smrg { } 2894d5abbe8Smrg 2904d5abbe8Smrg template<typename _Iterator2> 291fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2924d5abbe8Smrg bool operator_Iter_equals_iter2934d5abbe8Smrg operator()(_Iterator2 __it2) 2943f4ceed9Smrg { return *__it2 == *_M_it1; } 2954d5abbe8Smrg }; 2964d5abbe8Smrg 2974d5abbe8Smrg template<typename _Iterator> 298fb8a8121Smrg _GLIBCXX20_CONSTEXPR 2994d5abbe8Smrg inline _Iter_equals_iter<_Iterator> __iter_comp_iter(_Iter_equal_to_iter,_Iterator __it)3004d5abbe8Smrg __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 3014d5abbe8Smrg { return _Iter_equals_iter<_Iterator>(__it); } 3024d5abbe8Smrg 3034d5abbe8Smrg template<typename _Predicate> 3044d5abbe8Smrg struct _Iter_pred 3054d5abbe8Smrg { 3064d5abbe8Smrg _Predicate _M_pred; 3074d5abbe8Smrg 308fb8a8121Smrg _GLIBCXX20_CONSTEXPR 3093f4ceed9Smrg explicit _Iter_pred_Iter_pred3104d5abbe8Smrg _Iter_pred(_Predicate __pred) 311b17d1066Smrg : _M_pred(_GLIBCXX_MOVE(__pred)) 3124d5abbe8Smrg { } 3134d5abbe8Smrg 3144d5abbe8Smrg template<typename _Iterator> 315fb8a8121Smrg _GLIBCXX20_CONSTEXPR 3164d5abbe8Smrg bool operator_Iter_pred3174d5abbe8Smrg operator()(_Iterator __it) 3184d5abbe8Smrg { return bool(_M_pred(*__it)); } 3194d5abbe8Smrg }; 3204d5abbe8Smrg 3214d5abbe8Smrg template<typename _Predicate> 322fb8a8121Smrg _GLIBCXX20_CONSTEXPR 3234d5abbe8Smrg inline _Iter_pred<_Predicate> __pred_iter(_Predicate __pred)3244d5abbe8Smrg __pred_iter(_Predicate __pred) 325b17d1066Smrg { return _Iter_pred<_Predicate>(_GLIBCXX_MOVE(__pred)); } 3264d5abbe8Smrg 3274d5abbe8Smrg template<typename _Compare, typename _Value> 3284d5abbe8Smrg struct _Iter_comp_to_val 3294d5abbe8Smrg { 3304d5abbe8Smrg _Compare _M_comp; 3314d5abbe8Smrg _Value& _M_value; 3324d5abbe8Smrg 333fb8a8121Smrg _GLIBCXX20_CONSTEXPR _Iter_comp_to_val_Iter_comp_to_val3344d5abbe8Smrg _Iter_comp_to_val(_Compare __comp, _Value& __value) 335b17d1066Smrg : _M_comp(_GLIBCXX_MOVE(__comp)), _M_value(__value) 3364d5abbe8Smrg { } 3374d5abbe8Smrg 3384d5abbe8Smrg template<typename _Iterator> 339fb8a8121Smrg _GLIBCXX20_CONSTEXPR 3404d5abbe8Smrg bool operator_Iter_comp_to_val3414d5abbe8Smrg operator()(_Iterator __it) 3424d5abbe8Smrg { return bool(_M_comp(*__it, _M_value)); } 3434d5abbe8Smrg }; 3444d5abbe8Smrg 3454d5abbe8Smrg template<typename _Compare, typename _Value> 3464d5abbe8Smrg _Iter_comp_to_val<_Compare, _Value> 347fb8a8121Smrg _GLIBCXX20_CONSTEXPR __iter_comp_val(_Compare __comp,_Value & __val)3484d5abbe8Smrg __iter_comp_val(_Compare __comp, _Value &__val) 349b17d1066Smrg { 350b17d1066Smrg return _Iter_comp_to_val<_Compare, _Value>(_GLIBCXX_MOVE(__comp), __val); 351b17d1066Smrg } 3524d5abbe8Smrg 3534d5abbe8Smrg template<typename _Compare, typename _Iterator1> 3544d5abbe8Smrg struct _Iter_comp_to_iter 3554d5abbe8Smrg { 3564d5abbe8Smrg _Compare _M_comp; 3573f4ceed9Smrg _Iterator1 _M_it1; 3584d5abbe8Smrg 359fb8a8121Smrg _GLIBCXX20_CONSTEXPR _Iter_comp_to_iter_Iter_comp_to_iter3604d5abbe8Smrg _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 361b17d1066Smrg : _M_comp(_GLIBCXX_MOVE(__comp)), _M_it1(__it1) 3624d5abbe8Smrg { } 3634d5abbe8Smrg 3644d5abbe8Smrg template<typename _Iterator2> 365fb8a8121Smrg _GLIBCXX20_CONSTEXPR 3664d5abbe8Smrg bool operator_Iter_comp_to_iter3674d5abbe8Smrg operator()(_Iterator2 __it2) 3683f4ceed9Smrg { return bool(_M_comp(*__it2, *_M_it1)); } 3694d5abbe8Smrg }; 3704d5abbe8Smrg 3714d5abbe8Smrg template<typename _Compare, typename _Iterator> 372fb8a8121Smrg _GLIBCXX20_CONSTEXPR 3734d5abbe8Smrg inline _Iter_comp_to_iter<_Compare, _Iterator> __iter_comp_iter(_Iter_comp_iter<_Compare> __comp,_Iterator __it)3744d5abbe8Smrg __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 375b17d1066Smrg { 376b17d1066Smrg return _Iter_comp_to_iter<_Compare, _Iterator>( 377b17d1066Smrg _GLIBCXX_MOVE(__comp._M_comp), __it); 378b17d1066Smrg } 3794d5abbe8Smrg 3804d5abbe8Smrg template<typename _Predicate> 3814d5abbe8Smrg struct _Iter_negate 3824d5abbe8Smrg { 3834d5abbe8Smrg _Predicate _M_pred; 3844d5abbe8Smrg 385fb8a8121Smrg _GLIBCXX20_CONSTEXPR 3863f4ceed9Smrg explicit _Iter_negate_Iter_negate3874d5abbe8Smrg _Iter_negate(_Predicate __pred) 388b17d1066Smrg : _M_pred(_GLIBCXX_MOVE(__pred)) 3894d5abbe8Smrg { } 3904d5abbe8Smrg 3914d5abbe8Smrg template<typename _Iterator> 392fb8a8121Smrg _GLIBCXX20_CONSTEXPR 3934d5abbe8Smrg bool operator_Iter_negate3944d5abbe8Smrg operator()(_Iterator __it) 3954d5abbe8Smrg { return !bool(_M_pred(*__it)); } 3964d5abbe8Smrg }; 3974d5abbe8Smrg 3984d5abbe8Smrg template<typename _Predicate> 399fb8a8121Smrg _GLIBCXX20_CONSTEXPR 4004d5abbe8Smrg inline _Iter_negate<_Predicate> __negate(_Iter_pred<_Predicate> __pred)4014d5abbe8Smrg __negate(_Iter_pred<_Predicate> __pred) 402b17d1066Smrg { return _Iter_negate<_Predicate>(_GLIBCXX_MOVE(__pred._M_pred)); } 4034d5abbe8Smrg 4044d5abbe8Smrg } // namespace __ops 4054d5abbe8Smrg } // namespace __gnu_cxx 4064d5abbe8Smrg 4074d5abbe8Smrg #endif 408