Бранимир Караџић 3 yıl önce
ebeveyn
işleme
a82b87c46e
1 değiştirilmiş dosya ile 6 ekleme ve 0 silme
  1. 6 0
      include/bx/inline/sort.inl

+ 6 - 0
include/bx/inline/sort.inl

@@ -38,12 +38,14 @@ namespace bx
 	template<typename Ty>
 	template<typename Ty>
 	void quickSort(Ty* _data, uint32_t _num, const ComparisonFn _fn)
 	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);
 		quickSort( (void*)_data, _num, sizeof(Ty), _fn);
 	}
 	}
 
 
 	template<typename Ty>
 	template<typename Ty>
 	void quickSort(void* _data, uint32_t _num, uint32_t _stride, const ComparisonFn _fn)
 	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);
 		quickSort(_data, _num, _stride, _fn);
 	}
 	}
 
 
@@ -167,6 +169,8 @@ done:
 	template <typename Ty>
 	template <typename Ty>
 	inline void radixSort(uint32_t* _keys, uint32_t* _tempKeys, Ty* _values, Ty* _tempValues, uint32_t _size)
 	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* keys = _keys;
 		uint32_t* tempKeys = _tempKeys;
 		uint32_t* tempKeys = _tempKeys;
 		Ty* values = _values;
 		Ty* values = _values;
@@ -301,6 +305,8 @@ done:
 	template <typename Ty>
 	template <typename Ty>
 	inline void radixSort(uint64_t* _keys, uint64_t* _tempKeys, Ty* _values, Ty* _tempValues, uint32_t _size)
 	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* keys = _keys;
 		uint64_t* tempKeys = _tempKeys;
 		uint64_t* tempKeys = _tempKeys;
 		Ty* values = _values;
 		Ty* values = _values;