Boost logo

Boost :

From: Jeremy Maitin-Shepard (jbms_at_[hidden])
Date: 2005-08-18 14:51:04


"Thorsten Ottosen" <nesotto_at_[hidden]> writes:

> "Thorsten Ottosen" <nesotto_at_[hidden]> wrote in message
> news:de2lb2$d6u$1_at_sea.gmane.org...
>>
>> "Christopher Kohlhoff" <chris_at_[hidden]> 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

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk