/** * https://quuxplusone.github.io/blog/2019/02/06/arrow-proxy/ */ #pragma once namespace iterator::detail { template struct arrow_proxy { arrow_proxy(Reference r) : r(std::move(r)) {} Reference r; Reference * operator->() { return std::addressof(r); } }; template arrow_proxy(R r) -> arrow_proxy; }