|
|
@@ -38,12 +38,14 @@ namespace bx
|
|
|
template<typename Ty>
|
|
|
void quickSort(Ty* _data, uint32_t _num, const ComparisonFn _fn)
|
|
|
{
|
|
|
+ BX_STATIC_ASSERT(isTriviallyMoveAssignable<Ty>(), "Sort element type must be trivially move assignable");
|
|
|
quickSort( (void*)_data, _num, sizeof(Ty), _fn);
|
|
|
}
|
|
|
|
|
|
template<typename Ty>
|
|
|
void quickSort(void* _data, uint32_t _num, uint32_t _stride, const ComparisonFn _fn)
|
|
|
{
|
|
|
+ BX_STATIC_ASSERT(isTriviallyMoveAssignable<Ty>(), "Sort element type must be trivially move assignable");
|
|
|
quickSort(_data, _num, _stride, _fn);
|
|
|
}
|
|
|
|
|
|
@@ -167,6 +169,8 @@ done:
|
|
|
template <typename Ty>
|
|
|
inline void radixSort(uint32_t* _keys, uint32_t* _tempKeys, Ty* _values, Ty* _tempValues, uint32_t _size)
|
|
|
{
|
|
|
+ BX_STATIC_ASSERT(isTriviallyMoveAssignable<Ty>(), "Sort element type must be trivially move assignable");
|
|
|
+
|
|
|
uint32_t* keys = _keys;
|
|
|
uint32_t* tempKeys = _tempKeys;
|
|
|
Ty* values = _values;
|
|
|
@@ -301,6 +305,8 @@ done:
|
|
|
template <typename Ty>
|
|
|
inline void radixSort(uint64_t* _keys, uint64_t* _tempKeys, Ty* _values, Ty* _tempValues, uint32_t _size)
|
|
|
{
|
|
|
+ BX_STATIC_ASSERT(isTriviallyMoveAssignable<Ty>(), "Sort element type must be trivially move assignable");
|
|
|
+
|
|
|
uint64_t* keys = _keys;
|
|
|
uint64_t* tempKeys = _tempKeys;
|
|
|
Ty* values = _values;
|