В __algorithm/fill_n.h есть следующая функция:
Код: Выделить всё
// fill_n isn't specialized for std::memset, because the compiler already optimizes the loop to a call to std::memset.
template
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20
_OutputIterator
__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value)
{
for (; __n > 0; ++__first, (void) --__n)
*__first = __value;
return __first;
}
Я надеялся добавить перегрузку __fil_n для тривиально копируемых _Tp и смежных итераторов (включая std:: итератор массива).
Итак, учитывая следующий код,
Код: Выделить всё
template struct foo_t {
struct iterator {};
};
template int f(T) { return 1; }
template int f(typename foo_t::iterator) { return 2; }
int main() {
foo_t::iterator a;
return f(a);
}
Идеальным решением было бы решение с версией C++ >= 11, но
Подробнее здесь: https://stackoverflow.com/questions/787 ... n-template