Вывод конфликтующих типов в пакете шаблонов со ссылкой

Я просто ответил на аналогичный вопрос: https://stackoverflow.com/a/43501438/206820

Если вы просто не просто хотите открыть URL-адрес, но также хотите загрузить ресурс (скажем, файл PDF), вы можете использовать код, как показано ниже:

    # proxy = ProxyHandler({'http': 'http://192.168.1.31:8888'})
    proxy = ProxyHandler({})
    opener = build_opener(proxy)
    opener.addheaders = [('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30')]
    install_opener(opener)

    result = urlretrieve(url=file_url, filename=file_name)

Причина, по которой я добавил прокси, - отслеживать трафик в Чарльзе, и вот трафика я получил:

5
задан Thomas Sablik 29 March 2019 в 11:34
поделиться

1 ответ

Я не уверен, почему вы не хотите изменять execute, но, на мой взгляд, лучшим вариантом будет использование его для использования отдельного параметра шаблона для вызываемого объекта.

Это дает дополнительное преимущество, которое вы можете передать любому вызываемому элементу, например лямбде, или std::function, или функтору.

Добавление идеальной пересылки - еще одна хорошая идея. Вызываемый объект, возможно, может быть переадресован так, чтобы быть как можно более общим.

#include <utility>

template<typename F, typename ...Args>
void execute(F fun, Args&& ...args) {
    fun(std::forward<Args>(args)...);
}

Если сигнатура функции важна, и поэтому вы не хотите изменять execute, есть способы извлечь ее из F с помощью признаков типа.

0
ответ дан super 29 March 2019 в 11:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: