inline typename std::enable_if<boost::has_range_iterator<SourceRange>::value>::type direct(const Kernel& K, const SourceRange& s, const ChargeRange& c, const TargetRange& t, ResultRange& r) { detail::block_eval(K, s.begin(), s.end(), c.begin(), t.begin(), t.end(), r.begin()); }