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,12 +448,15 @@ 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
{ {
static int wxCMPFUNC_CONV
Compare(const void* pitem1, const void* pitem2, const void* )
{
const T& item1 = *reinterpret_cast<const T*>(pitem1); const T& item1 = *reinterpret_cast<const T*>(pitem1);
const T& item2 = *reinterpret_cast<const T*>(pitem2); const T& item2 = *reinterpret_cast<const T*>(pitem2);
@@ -463,7 +466,8 @@ int wxCMPFUNC_CONV wxVectorSort_compare(const void* pitem1, const void* pitem2,
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);
} }