@c_str:

I am trying to create idioms whereby when code is written with my library it feels like a higher level language.

int i = 0; std::for_each(nums.begin(), nums.end(), [&](int& n){  i += n; });

// versus

int i = 0; ForEach(n, nums) i += n; 

// or simply

auto i = Query(nums).Sum();