Я хочу написать функцию, которая будет использовать libcurl для файла, а затем сохранить в контейнер. Я бы хотел использовать итераторы для абстрагирования типа контейнера. Функция будет выглядеть следующим образом:Кастинг неизвестного типа
template <typename OutIt>
bool download_to_container(const std::string& link, OutIt out)
{
//set the write callback
//perform the action
//return whatever
}
обратного вызова записи является функцией подписи size_t(char*, size_t, size_t, void *userdata)
где userdata
указатель я могу установить, что Libcurl будет проходить в обратный вызов записи для меня.
userdata
станет указателем на выходной итератор, который пользователь перешёл в download_to_container
. Теперь, как только будет вызван обратный вызов, мне придется отдать это void*
в OutIt*
. Как я могу это сделать, если я не знаю тип итератора? Это первый раз, когда я сталкиваюсь с этой проблемой, поэтому, пожалуйста, успокойся. :-)
Я использую Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)
.
Только то, что мне нужно. Я серьезно не знаю, почему я об этом не думал. Я застрял в этой странной идее, что обратный вызов не может быть шаблоном функции, потому что я имел дело с C API. Тут, странно. В любом случае, спасибо! :) – Tuntuni