Пишу простую шаблонную функцию in_array. По замыслу, она должна работать с любыми типами. Вот код:
template
Получаю ошибки:
std::begin: не найдена соответствующая перегруженная функция
То же для std::end. В чем моя ошибка?
Ответ
Для указателей стандартные функции std::begin и std::end не определены.
Имея указатель, в общем случае, нельзя определить, указывает ли он на одиночный объект или на первый объект некоторой последовательности объектов. В виду этого нельзя определить функцию std::end для указателей, так как неизвестно число элементов, которые могут адресоваться указателем.
Вы могли бы свою функцию определить следующим образом
template
return e != std::end(haystack);
}
Либо вы можете эту функцию определить как
template
return e != haystack + n;
}
включив в объявление функции еще один параметр, задающий число элементов в массиве.
Комментариев нет:
Отправить комментарий