template <class It, class X> bool binary_search (...) { if (begin < end) { It mid = begin + (end - begin)/2; if ( x < *mid ) { return binary_seach (begin, mid); } else if ( x > *mid ) { return binary_seach (mid, end); } else { return true; } } else { return false; } }
while
)
begin + (end-begin)/2
und nicht
(begin + end)/2
?