Use iterators in unitialized_copy.
Previously, unitialized_copy assumed the args were pointers.
Replace the const * with iterators.

Fixed a bug, uninitialized_copy must return an iterator pass
the last element inserted in dest. Previously we were returning
the start of dest.

Fixed a bug, we can use memmove only when the types pointed are POD
but also when both source AND dest iterators are random access ones
(i.e both source and dest use a contiguous array to store the values)
The prev code would call memmove if the input was a vector<int> and
output a linked list<int> which is wrong since the list element are
stored in nodes, non contiguous area.

Added a specialization when the 2 types are pod but the iterator
are not random access ones (think linked list of ints). I was not
sure if placement new degrades to assignement in that case so I
provided a specialization that explicitly uses '='.

In limits,
added support for int and unsigned int.
replaced C style casts with static_cast.
6 files changed
tree: 3f7e8d018276a2f2711195c402620790e7c09931
  1. include/
  2. src/
  3. tests/
  4. Android.mk
  5. README