// // adaptor.h // stream // // Created by Sam Jaffe on 4/6/23. // #pragma once #include namespace stream::detail { template struct adaptor { using dereference_t = T (*)(void *); using equal_to_t = bool (*)(void *, void *); using increment_t = void (*)(void *); static dereference_t dereference() { return [](void * p) -> T { return **((It *)p); }; } static equal_to_t equal_to() { return [](void * l, void * r) { return *((It *)l) == *((It *)r); }; } static increment_t increment() { return [](void * p) { ++(*(It *)(p)); }; } }; }