Three algorithm functions of gcc's C++ STL test suite do
not work with dbstl. They are find_end(),
inplace_merge() and
stable_sort().
The reason for the incompatibility of
find_end() is that it assumes the
data an iterator refers to is located at a shared place (owned
by its container). This assumption is not correct in that it
is part of the C++ STL standards specification. However, this
assumption can not be true for dbstl because each dbstl
container iterator caches its referenced value.
Consequently, please do not use
find_end() for dbstl container
iterators if you are using gcc's STL library.
The reason for the incompatibility with
inplace_merge() and
stable_sort() is that their
implementation in gcc requires the
value_type for a container to be default
constructible. This requirement is not a part of the the C++
STL standard specification. Dbstl's value type wrappers (such
as ElementHolder) do not support it.
These issues do not exist for any function available with
the Microsoft Visual C++ 8 STL library. There are two
algorithm functions of Microsoft Visual C++ 10 STL library
that do have an issue: partial_sort() and
partial_sort_copy(). These are not
compatible because they require the dbstl
vector iterator to create a new element
when updating the current element. Dbstl
vector iterator can copy the new
content to the current element, but it cannot create a new
one. This requirement is not a part of the C++ STL standard
specification, and so dbstl's vector
iterator does not support it.