
"Thorsten Ottosen" <nesotto@cs.aau.dk> writes:
"Thorsten Ottosen" <nesotto@cs.aau.dk> wrote in message news:de2lb2$d6u$1@sea.gmane.org...
"Christopher Kohlhoff" <chris@kohlhoff.com> wrote in message
5. can't socket.recv() use something more highlevel than void* and size_t arguments? Why not std::vector<char> ? (The same applies to all the interface functions)
std::vector<char> (even with additional offset and length parameters) introduces significant overhead for users that do not otherwise have any reason to use std::vector. I do not think the additional safety provided is worth the cost of this overhead.
Furthermore, if you do want array arguments, then you might just say
template< class T, std:size_t N > void receive( T (&array)[N] ) { /* call void ptr version here */ }
or perhaps just
template< std::size_t N > void receive( char (&array)[N] ) { ... }
Requiring that the size be known at compile-time, and that an actual static-sized array be used in order to call the receive function, is definitely not a good idea. -- Jeremy Maitin-Shepard