| 339 | |
| 340 | template <class C, class P> |
| 341 | void EraseNodesIf(C& c, P p) { |
| 342 | for (auto iter = c.begin(), last = c.end(); iter != last;) { |
| 343 | if (p(*iter)) { |
| 344 | if constexpr (std::is_same_v<decltype(iter), decltype(c.erase(iter))>) { |
| 345 | iter = c.erase(iter); |
| 346 | } else { |
| 347 | c.erase(iter++); |
| 348 | } |
| 349 | } else { |
| 350 | ++iter; |
| 351 | } |
| 352 | } |
| 353 | } |
| 354 | |
| 355 | template <class T1, class T2> |
| 356 | constexpr bool Equal(T1 f1, T1 l1, T2 f2) { |
no test coverage detected