move binaryop to functor
range algorithm
add range/algorithm/advance.hpp