buf.data()
определено для возврата указателя на первый элемент массива, а элементы в Boost.Array определены как смежные.
Таким образом, buf.data() + 5
будет указателем на элемент (в данном случае, символ) массива.
Вы также можете написать &buf[5]
и получить тот же указатель.
Обратите внимание, что в коде выше:
std::cout << buf.data() + 5;
вы пытаетесь напечатать значение указателя, а не символ, на который он указывает.