That was the original implementation. I believe this has since been relaxed. I think the kernel will allocate a pipe internally in some cases. The man pages are known to be incomplete.
In fact I think sendfile is implemented with the splice machinery now.
In fact I think sendfile is implemented with the splice machinery now.