template<typename T, typename F> class proxy {
T&& t;
F&& f;
public:
template<typename TRef, typename FRef> proxy(TRef&& tref, FRef&& fref) {
: t(std::forward<TRef>(tref)), f(std::forward<FRef>(fref)) {}
template<typename ret> operator ret() {
ret retval;
std::for_each(t.begin(), t.end(), [&](decltype(*t.begin()) ref) {
retval.emplace_back(f(ref));
});
return retval;
}
};
template<typename T, typename F> auto Select(T&& t, F&& f) -> proxy<T, F> {
return proxy<T, F>(t, f);
}
What I really need is one: add member interface, not free function, and two, alter the lazy evaluation to be per-value on-demand, not all at once, if possible. To do this I will implement some custom iterators. Then my domination of the galaxy shall be complete. By that, I mean I will feel at least somewhat better. And less devastatingly sick.
No comments:
Post a Comment