X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/068c8da4a82adad6c6c60e8777a4e89d0a44f0c6..e9e8b38179b147dd04f5c19af7e56a94342e93a7:/include/wx/vector.h diff --git a/include/wx/vector.h b/include/wx/vector.h index c30f158e8b..1d785e949d 100644 --- a/include/wx/vector.h +++ b/include/wx/vector.h @@ -17,6 +17,8 @@ #if wxUSE_STL #include +#include + #define wxVector std::vector template inline void wxVectorSort(wxVector& v) @@ -116,7 +118,10 @@ private: // Note that we use typedef instead of privately deriving from this (which // would allowed us to omit "Ops::" prefixes below) to keep VC6 happy, // it can't compile code that derives from wxIf<...>::value. - typedef typename wxIf< wxIsMovable::value, + // + // Note that bcc needs the extra parentheses for non-type template + // arguments to compile this expression. + typedef typename wxIf< (wxIsMovable::value), wxPrivate::wxVectorMemOpsMovable, wxPrivate::wxVectorMemOpsGeneric >::value Ops; @@ -446,22 +451,26 @@ inline typename wxVector::size_type wxVector::erase(size_type n) namespace wxPrivate { - // This function is a helper for the wxVectorSort function, and should - // not be used directly in user's code. +// This is a helper for the wxVectorSort function, and should not be used +// directly in user's code. template -int wxCMPFUNC_CONV wxVectorSort_compare(const void* pitem1, const void* pitem2, const void* ) +struct wxVectorComparator { - const T& item1 = *reinterpret_cast(pitem1); - const T& item2 = *reinterpret_cast(pitem2); - - if (item1 < item2) - return -1; - else if (item2 < item1) - return 1; - else - return 0; -} + static int wxCMPFUNC_CONV + Compare(const void* pitem1, const void* pitem2, const void* ) + { + const T& item1 = *reinterpret_cast(pitem1); + const T& item2 = *reinterpret_cast(pitem2); + + if (item1 < item2) + return -1; + else if (item2 < item1) + return 1; + else + return 0; + } +}; } // namespace wxPrivate @@ -471,7 +480,7 @@ template void wxVectorSort(wxVector& v) { wxQsort(v.begin(), v.size(), sizeof(T), - wxPrivate::wxVectorSort_compare, NULL); + wxPrivate::wxVectorComparator::Compare, NULL); }