$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Valentin Bonnard (Bonnard.V_at_[hidden])
Date: 2000-08-01 11:15:14
Nicolai Josuttis wrote:
> Attached is the new version of array<> as complete file tree
Comments: 
why don't you use the boost utilities in order 
to implement !=, >=, <=, > ?
A looong time ago I implemented a container a bit like which supported 
elements with no default ctor (like vector does). array<> does not.
To get such support you have to give-up the internal T array, so 
it means direct "= { foo, bar }" style initialisation won't be 
available anymore.
> Of course, it's still not perfect.
> But it should be good enough to put it on the web.
> 
> Same urgent questions I have:
> - How to implement a template assignement operator that
>   makes sure that the same number of elements are used?
This is too easy:
template <typename T2>
array<T,N>& operator= (const array<T2,N>& rhs)
{
  using std::copy;
  copy (rhs.begin (), rhs.end (), begin ());
  return *this;
}
> - Does anybody know whether using "{...}" instead of
>   "{ { ... } }" for initialization is valid code???
> - assign()
Do you mean:
void assign (const T& elt)
{
  using std::fill_n;
  fill_n (begin (), size (), elt);
}
> - Jens Maurer <Jens.Maurer_at_[hidden]>:
>     Do we want the "using std::swap;" trick so that Koenig lookup finds
>     more global element swap() functions?
>   What's that????
It probably means: Do not call std::swap directly.
Call the function (say do_swap) implemented as:
template <typename T>
void do_swap (T& lhs, T& rhs)
{
  using std::swap;
  swap (lhs, rhs);
}
This function should be in some boost header (if it isn't already).
-- Valentin Bonnard