std::pair<int,int> CheckRecursiveRange(RangeType range) { std::pair<int,int> sum(0, 0); // count, sum for( Iterator i = range.begin(), e = range.end(); i != e; ++i ) { ++sum.first; sum.second += Value<ContainerType>::get(*i); } if( range.is_divisible() ) { RangeType range2( range, tbb::split() ); std::pair<int,int> sum1 = CheckRecursiveRange<ContainerType,Iterator, RangeType>( range ); std::pair<int,int> sum2 = CheckRecursiveRange<ContainerType,Iterator, RangeType>( range2 ); sum1.first += sum2.first; sum1.second += sum2.second; ASSERT( sum == sum1, "Mismatched ranges after division"); } return sum; }