小编koa*_*alo的帖子

调用功能的通用模板与向量元素

我想用一个来自向量的参数调用一个函数.仅这一点当然很容易,但我想写一个通用的包装器来为我完成任务.后来它也应该从类似boost :: variant的泛型类型进行转换,但我认为在解决这个问题后我可以处理它.

这是我的第一次尝试:

#include <iostream>
#include <functional>
#include <vector>

using namespace std;

void foo(int a, int b)
{
  cout << a*10+b << endl;
}

template<class... Args>
void callByVector(std::function<void(Args...)> f, vector<int>& arguments)
{
  int i = 0;
  f(static_cast<Args>(arguments[i++])...);
}

int main()
{
  vector<int> arguments;
  arguments.push_back(2);
  arguments.push_back(3);

  callByVector(std::function<void(int,int)>(foo),arguments);
}
Run Code Online (Sandbox Code Playgroud)

它可以工作,但正如您可能猜到的,未定义增量的执行顺序.因此,整体结果可以是23或32(我可以用不同的编译器确认).

任何想法或我必须忘记这一点?

问候,弗洛里安

c++ templates c++11

9
推荐指数
1
解决办法
1077
查看次数

如何使用 Python 和 Flask 转发 HTTP 范围请求?

我有一个 Flask 应用程序,它将提供一个端点来下载一个大文件。但是,不是从文件系统提供它或即时生成文件,而是必须首先通过 HTTP 从另一台服务器下载该文件。

当然,我可以先向外部服务器执行 GET 请求,完整下载文件并将其存储在文件系统或内存中,然后作为第二步提供原始请求的结果。这看起来像这样(还包括一个基本的身份验证,以表明为什么在较低层上的简单代理是不够的):

#!flask/bin/python
from flask import Flask, jsonify
import os
import requests
from requests.auth import HTTPBasicAuth

app = Flask(__name__)

@app.route('/download')
def download():
    auth = HTTPBasicAuth("some_user", "some_password")
    session = requests.Session()
    session.auth = auth
    response = session.get("http://example.com")
    return response.content

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=1234, debug=True)
Run Code Online (Sandbox Code Playgroud)

但是,这会增加应用程序的延迟和存储要求。而且,即使接收方只需要执行文件的部分下载(即执行 HTTP 范围请求),也必须首先从外部服务器完全获取文件。

有没有更优雅的选择来解决这个问题,即为直接转发到外部服务器的 HTTP 范围请求提供支持?

python http flask

5
推荐指数
1
解决办法
1671
查看次数

const std::optional 的内容是否总是常量?

我会假设

std::optional<const std::string>
Run Code Online (Sandbox Code Playgroud)

允许为可选项分配一个新值,但不能更改字符串本身和

const std::optional<const std::string>
Run Code Online (Sandbox Code Playgroud)

两者都做是不可能的。但是下面的呢?

const std::optional<std::string>
Run Code Online (Sandbox Code Playgroud)

c++ c++17

4
推荐指数
2
解决办法
2592
查看次数

标签 统计

c++ ×2

c++11 ×1

c++17 ×1

flask ×1

http ×1

python ×1

templates ×1