반복자가 가리키는 2 개의 값을 교환하고 싶습니다. 그래서 반복자를 가져 오는 템플릿 함수를 전문화하고 싶습니다. 내가 어떻게 할 수 있니? 비 반복자에 대한반복자에 대한 C++ 템플릿 전문화
기능 : 반복자에 대한
template <typename T>
void exch(T &a, T &b)
{
T c(std::move(a));
a = std::move(b);
b = std::move(c);
}
기능 : 물론
template <typename It>
void exch(It &a, It &b)
{
auto c(std::move(*a));
*a = std::move(*b);
*b = std::move(c);
}
, 나는 오류 얻을이 개 기능 :
/프로젝트/DFSTL를/주 .cpp : 17 : 6 : 오류 : 'template void exch (It &, It &)'의 재정의 '
SFINAE 또는 is_iterator 특성에 태그를 디스패치합니다. 구현은 쉽게 찾을 수 있습니다. 하지만 정말로 이것을하고 싶습니까? 만약 누군가가 정말로 반복자를 교환하고 싶다면? –
'std :: iter_swap()'을 사용할 수 있습니다. – 0x499602D2