|
Boost : |
From: Valentin Bonnard (Bonnard.V_at_[hidden])
Date: 2000-01-23 16:46:17
Dave Abrahams wrote:
>
> In generic programs, there are two ways to allow users to customize
> behaviors of called functions for their own types:
>
> 1. We can use overloading and rely on Koenig lookup to help select specific
> implementations.
> 2. We can supply a function template and rely on the user to specialize it
> for her own types.
3. For namespaces different from std, use overloading in only one
namespace
for things that can be overloaded (functions), and do not rely on
Koenig
lookup but, on the contrary, use qualified names; user code adds
overloads
directly in the library namespace
use specialisations for things which can't (classes)
In any cases, when adding something to a namespace, follow the
requirements of the name of the thing being added.
This works w/o reserving function names in every namespace,
and allows complete parametrisation by library users.
> (e.g., how would you write an abs that works for unsigned?)
Seems to me that
namespace boost {
unsigned abs (unsigned x) { return x; }
unsigned long abs (unsigned long x) { return x; }
}
does the job.
-- Valentin Bonnard
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk