The C and C++ Include Header Files
/usr/include/c++/11/bits/predefined_ops.h
$ cat -n /usr/include/c++/11/bits/predefined_ops.h 1 // Default predicates for internal use -*- C++ -*- 2 3 // Copyright (C) 2013-2021 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 3, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // Under Section 7 of GPL version 3, you are granted additional 17 // permissions described in the GCC Runtime Library Exception, version 18 // 3.1, as published by the Free Software Foundation. 19 20 // You should have received a copy of the GNU General Public License and 21 // a copy of the GCC Runtime Library Exception along with this program; 22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23 //
. 24 25 /** @file predefined_ops.h 26 * This is an internal header file, included by other library headers. 27 * You should not attempt to use it directly. @headername{algorithm} 28 */ 29 30 #ifndef _GLIBCXX_PREDEFINED_OPS_H 31 #define _GLIBCXX_PREDEFINED_OPS_H 1 32 33 #include
34 35 namespace __gnu_cxx 36 { 37 namespace __ops 38 { 39 struct _Iter_less_iter 40 { 41 template
42 _GLIBCXX14_CONSTEXPR 43 bool 44 operator()(_Iterator1 __it1, _Iterator2 __it2) const 45 { return *__it1 < *__it2; } 46 }; 47 48 _GLIBCXX14_CONSTEXPR 49 inline _Iter_less_iter 50 __iter_less_iter() 51 { return _Iter_less_iter(); } 52 53 struct _Iter_less_val 54 { 55 #if __cplusplus >= 201103L 56 constexpr _Iter_less_val() = default; 57 #else 58 _Iter_less_val() { } 59 #endif 60 61 _GLIBCXX20_CONSTEXPR 62 explicit 63 _Iter_less_val(_Iter_less_iter) { } 64 65 template
66 _GLIBCXX20_CONSTEXPR 67 bool 68 operator()(_Iterator __it, _Value& __val) const 69 { return *__it < __val; } 70 }; 71 72 _GLIBCXX20_CONSTEXPR 73 inline _Iter_less_val 74 __iter_less_val() 75 { return _Iter_less_val(); } 76 77 _GLIBCXX20_CONSTEXPR 78 inline _Iter_less_val 79 __iter_comp_val(_Iter_less_iter) 80 { return _Iter_less_val(); } 81 82 struct _Val_less_iter 83 { 84 #if __cplusplus >= 201103L 85 constexpr _Val_less_iter() = default; 86 #else 87 _Val_less_iter() { } 88 #endif 89 90 _GLIBCXX20_CONSTEXPR 91 explicit 92 _Val_less_iter(_Iter_less_iter) { } 93 94 template
95 _GLIBCXX20_CONSTEXPR 96 bool 97 operator()(_Value& __val, _Iterator __it) const 98 { return __val < *__it; } 99 }; 100 101 _GLIBCXX20_CONSTEXPR 102 inline _Val_less_iter 103 __val_less_iter() 104 { return _Val_less_iter(); } 105 106 _GLIBCXX20_CONSTEXPR 107 inline _Val_less_iter 108 __val_comp_iter(_Iter_less_iter) 109 { return _Val_less_iter(); } 110 111 struct _Iter_equal_to_iter 112 { 113 template
114 _GLIBCXX20_CONSTEXPR 115 bool 116 operator()(_Iterator1 __it1, _Iterator2 __it2) const 117 { return *__it1 == *__it2; } 118 }; 119 120 _GLIBCXX20_CONSTEXPR 121 inline _Iter_equal_to_iter 122 __iter_equal_to_iter() 123 { return _Iter_equal_to_iter(); } 124 125 struct _Iter_equal_to_val 126 { 127 template
128 _GLIBCXX20_CONSTEXPR 129 bool 130 operator()(_Iterator __it, _Value& __val) const 131 { return *__it == __val; } 132 }; 133 134 _GLIBCXX20_CONSTEXPR 135 inline _Iter_equal_to_val 136 __iter_equal_to_val() 137 { return _Iter_equal_to_val(); } 138 139 _GLIBCXX20_CONSTEXPR 140 inline _Iter_equal_to_val 141 __iter_comp_val(_Iter_equal_to_iter) 142 { return _Iter_equal_to_val(); } 143 144 template
145 struct _Iter_comp_iter 146 { 147 _Compare _M_comp; 148 149 explicit _GLIBCXX14_CONSTEXPR 150 _Iter_comp_iter(_Compare __comp) 151 : _M_comp(_GLIBCXX_MOVE(__comp)) 152 { } 153 154 template
155 _GLIBCXX14_CONSTEXPR 156 bool 157 operator()(_Iterator1 __it1, _Iterator2 __it2) 158 { return bool(_M_comp(*__it1, *__it2)); } 159 }; 160 161 template
162 _GLIBCXX14_CONSTEXPR 163 inline _Iter_comp_iter<_Compare> 164 __iter_comp_iter(_Compare __comp) 165 { return _Iter_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); } 166 167 template
168 struct _Iter_comp_val 169 { 170 _Compare _M_comp; 171 172 _GLIBCXX20_CONSTEXPR 173 explicit 174 _Iter_comp_val(_Compare __comp) 175 : _M_comp(_GLIBCXX_MOVE(__comp)) 176 { } 177 178 _GLIBCXX20_CONSTEXPR 179 explicit 180 _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) 181 : _M_comp(__comp._M_comp) 182 { } 183 184 #if __cplusplus >= 201103L 185 _GLIBCXX20_CONSTEXPR 186 explicit 187 _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) 188 : _M_comp(std::move(__comp._M_comp)) 189 { } 190 #endif 191 192 template
193 _GLIBCXX20_CONSTEXPR 194 bool 195 operator()(_Iterator __it, _Value& __val) 196 { return bool(_M_comp(*__it, __val)); } 197 }; 198 199 template
200 _GLIBCXX20_CONSTEXPR 201 inline _Iter_comp_val<_Compare> 202 __iter_comp_val(_Compare __comp) 203 { return _Iter_comp_val<_Compare>(_GLIBCXX_MOVE(__comp)); } 204 205 template
206 _GLIBCXX20_CONSTEXPR 207 inline _Iter_comp_val<_Compare> 208 __iter_comp_val(_Iter_comp_iter<_Compare> __comp) 209 { return _Iter_comp_val<_Compare>(_GLIBCXX_MOVE(__comp)); } 210 211 template
212 struct _Val_comp_iter 213 { 214 _Compare _M_comp; 215 216 _GLIBCXX20_CONSTEXPR 217 explicit 218 _Val_comp_iter(_Compare __comp) 219 : _M_comp(_GLIBCXX_MOVE(__comp)) 220 { } 221 222 _GLIBCXX20_CONSTEXPR 223 explicit 224 _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) 225 : _M_comp(__comp._M_comp) 226 { } 227 228 #if __cplusplus >= 201103L 229 _GLIBCXX20_CONSTEXPR 230 explicit 231 _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) 232 : _M_comp(std::move(__comp._M_comp)) 233 { } 234 #endif 235 236 template
237 _GLIBCXX20_CONSTEXPR 238 bool 239 operator()(_Value& __val, _Iterator __it) 240 { return bool(_M_comp(__val, *__it)); } 241 }; 242 243 template
244 _GLIBCXX20_CONSTEXPR 245 inline _Val_comp_iter<_Compare> 246 __val_comp_iter(_Compare __comp) 247 { return _Val_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); } 248 249 template
250 _GLIBCXX20_CONSTEXPR 251 inline _Val_comp_iter<_Compare> 252 __val_comp_iter(_Iter_comp_iter<_Compare> __comp) 253 { return _Val_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); } 254 255 template
256 struct _Iter_equals_val 257 { 258 _Value& _M_value; 259 260 _GLIBCXX20_CONSTEXPR 261 explicit 262 _Iter_equals_val(_Value& __value) 263 : _M_value(__value) 264 { } 265 266 template
267 _GLIBCXX20_CONSTEXPR 268 bool 269 operator()(_Iterator __it) 270 { return *__it == _M_value; } 271 }; 272 273 template
274 _GLIBCXX20_CONSTEXPR 275 inline _Iter_equals_val<_Value> 276 __iter_equals_val(_Value& __val) 277 { return _Iter_equals_val<_Value>(__val); } 278 279 template
280 struct _Iter_equals_iter 281 { 282 _Iterator1 _M_it1; 283 284 _GLIBCXX20_CONSTEXPR 285 explicit 286 _Iter_equals_iter(_Iterator1 __it1) 287 : _M_it1(__it1) 288 { } 289 290 template
291 _GLIBCXX20_CONSTEXPR 292 bool 293 operator()(_Iterator2 __it2) 294 { return *__it2 == *_M_it1; } 295 }; 296 297 template
298 _GLIBCXX20_CONSTEXPR 299 inline _Iter_equals_iter<_Iterator> 300 __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) 301 { return _Iter_equals_iter<_Iterator>(__it); } 302 303 template
304 struct _Iter_pred 305 { 306 _Predicate _M_pred; 307 308 _GLIBCXX20_CONSTEXPR 309 explicit 310 _Iter_pred(_Predicate __pred) 311 : _M_pred(_GLIBCXX_MOVE(__pred)) 312 { } 313 314 template
315 _GLIBCXX20_CONSTEXPR 316 bool 317 operator()(_Iterator __it) 318 { return bool(_M_pred(*__it)); } 319 }; 320 321 template
322 _GLIBCXX20_CONSTEXPR 323 inline _Iter_pred<_Predicate> 324 __pred_iter(_Predicate __pred) 325 { return _Iter_pred<_Predicate>(_GLIBCXX_MOVE(__pred)); } 326 327 template
328 struct _Iter_comp_to_val 329 { 330 _Compare _M_comp; 331 _Value& _M_value; 332 333 _GLIBCXX20_CONSTEXPR 334 _Iter_comp_to_val(_Compare __comp, _Value& __value) 335 : _M_comp(_GLIBCXX_MOVE(__comp)), _M_value(__value) 336 { } 337 338 template
339 _GLIBCXX20_CONSTEXPR 340 bool 341 operator()(_Iterator __it) 342 { return bool(_M_comp(*__it, _M_value)); } 343 }; 344 345 template
346 _Iter_comp_to_val<_Compare, _Value> 347 _GLIBCXX20_CONSTEXPR 348 __iter_comp_val(_Compare __comp, _Value &__val) 349 { 350 return _Iter_comp_to_val<_Compare, _Value>(_GLIBCXX_MOVE(__comp), __val); 351 } 352 353 template
354 struct _Iter_comp_to_iter 355 { 356 _Compare _M_comp; 357 _Iterator1 _M_it1; 358 359 _GLIBCXX20_CONSTEXPR 360 _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) 361 : _M_comp(_GLIBCXX_MOVE(__comp)), _M_it1(__it1) 362 { } 363 364 template
365 _GLIBCXX20_CONSTEXPR 366 bool 367 operator()(_Iterator2 __it2) 368 { return bool(_M_comp(*__it2, *_M_it1)); } 369 }; 370 371 template
372 _GLIBCXX20_CONSTEXPR 373 inline _Iter_comp_to_iter<_Compare, _Iterator> 374 __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) 375 { 376 return _Iter_comp_to_iter<_Compare, _Iterator>( 377 _GLIBCXX_MOVE(__comp._M_comp), __it); 378 } 379 380 template
381 struct _Iter_negate 382 { 383 _Predicate _M_pred; 384 385 _GLIBCXX20_CONSTEXPR 386 explicit 387 _Iter_negate(_Predicate __pred) 388 : _M_pred(_GLIBCXX_MOVE(__pred)) 389 { } 390 391 template
392 _GLIBCXX20_CONSTEXPR 393 bool 394 operator()(_Iterator __it) 395 { return !bool(_M_pred(*__it)); } 396 }; 397 398 template
399 _GLIBCXX20_CONSTEXPR 400 inline _Iter_negate<_Predicate> 401 __negate(_Iter_pred<_Predicate> __pred) 402 { return _Iter_negate<_Predicate>(_GLIBCXX_MOVE(__pred._M_pred)); } 403 404 } // namespace __ops 405 } // namespace __gnu_cxx 406 407 #endif
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2024 MyWebUniversity.com ™