Use template class instead of template function in wxVectorSort().

This allows the code to compile with VC6 which has trouble with explicit
specification of the template functions instantiation.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-04-11 17:38:01 +00:00
parent 5caf524dff
commit d8eff331e2

View File

@@ -448,22 +448,26 @@ inline typename wxVector<T>::size_type wxVector<T>::erase(size_type n)
namespace wxPrivate 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<typename T> template<typename T>
int wxCMPFUNC_CONV wxVectorSort_compare(const void* pitem1, const void* pitem2, const void* ) struct wxVectorSort
{ {
const T& item1 = *reinterpret_cast<const T*>(pitem1); static int wxCMPFUNC_CONV
const T& item2 = *reinterpret_cast<const T*>(pitem2); Compare(const void* pitem1, const void* pitem2, const void* )
{
const T& item1 = *reinterpret_cast<const T*>(pitem1);
const T& item2 = *reinterpret_cast<const T*>(pitem2);
if (item1 < item2) if (item1 < item2)
return -1; return -1;
else if (item2 < item1) else if (item2 < item1)
return 1; return 1;
else else
return 0; return 0;
} }
};
} // namespace wxPrivate } // namespace wxPrivate
@@ -473,7 +477,7 @@ template<typename T>
void wxVectorSort(wxVector<T>& v) void wxVectorSort(wxVector<T>& v)
{ {
wxQsort(v.begin(), v.size(), sizeof(T), wxQsort(v.begin(), v.size(), sizeof(T),
wxPrivate::wxVectorSort_compare<T>, NULL); wxPrivate::wxVectorSort<T>::Compare, NULL);
} }