Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
// Выбираем подходящую реализацию
return __do_copy::do_copy(first, last, result);
Move-семантика и сопутствующий std::move здесь не при чем, речь же идет об std::copy.
template< class T >
typename std::remove_reference<T>::type&& inline move( T&& t ) {
return t;
}
template<class T>
struct RelocateByMemcpy
{
static const bool allow = is_trivial<T>::value;
};
template <class T>
void Relocate(T* newLocation, T* oldLocation)
{
if(newLocation == oldLocation)
return;
if(RelocateByMemcpy<T>::allow)
{
memcpy(newLocation, oldLocation, sizeof(T));
}
else
{
new(newLocation) T(*oldLocation);
oldLocation->~T();
}
};
Как правильно скопировать массив и при чем тут SFINAE