const char nullterminated[] = "hi"; // sizeof(nullterminated) == 3В таком случае boost::size() не может догадаться есть ли у массива null terminator или нет, поэтому решили отдать этот вопрос "пользователям", введя as_literal/as_array.
const char[2] array = { "h", "i" }; // sizeof(array) == 2
boost::size(nullterminated) == boost::size(array) ?;
То есть теперь только так:
boost::size(boost::as_literal("hello"));