Use correct syntax. Change signature to:
template <class T, size_t size>
T findMax(const T (&arr)[size]){...}
Or you can use std::array argument for findMax() function.
Live Example
Why isn't this possible?
const T &arr: Here arr is a reference of type T and not the reference to array of type T as you might think. So you need [..] after arr. But then it will decay to a pointer.
Here you can change the binding with () and use const T (&arr)[SIZE].
For more, you can try to explore the difference between const T &arr[N] v/s const T (&arr)[N].