ref.h 478 B

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