sentinel.h 420 B

123456789101112131415161718192021
  1. //
  2. // sentinel.h
  3. // iterator
  4. //
  5. // Created by Sam Jaffe on 3/31/23.
  6. // Copyright © 2023 Sam Jaffe. All rights reserved.
  7. //
  8. #pragma once
  9. namespace iterator {
  10. struct sentinel_t {};
  11. inline constexpr sentinel_t sentinel;
  12. template <typename It> bool operator==(It const & iter, sentinel_t) {
  13. return iter.at_end();
  14. }
  15. template <typename It> bool operator!=(It const & iter, sentinel_t) {
  16. return !iter.at_end();
  17. }
  18. }