Binary Search in C++17
An idiomatic approach 


  to implement this instead of basic arrays and raw pointers


is to use iterators.
Returning bool is dubious. The situation where I only want to know if the element is present or not is very rare. Typically I want to know where exactly the element is (or, if absent, where it should be inserted to keep the collection sorted). Your function does compute this information, but immediately throws it away. Return an iterator.
All that said, consider the signature

template&lt;typename It, typename T&gt;
It binary_search(It first, It last, const T&amp; target)


It is now suspiciously similar to the standard library's std::lower_bound. Follow the link for further insight and inspiration.