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.