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