reference_view.h 449 B

123456789101112131415161718192021222324
  1. //
  2. // reference.h
  3. // stream
  4. //
  5. // Created by Sam Jaffe on 3/29/23.
  6. //
  7. #pragma once
  8. #include <stream/transform_view.h>
  9. namespace stream::ranges::views {
  10. inline auto deref() {
  11. return transform([](auto const & ptr) -> decltype(auto) { return *ptr; });
  12. }
  13. inline auto as_const() {
  14. return transform([](auto & ref) -> auto const & { return ref; });
  15. }
  16. inline auto as_rvalue() {
  17. return transform([](auto & ref) -> auto && { return ref; });
  18. }
  19. }