小编And*_*ton的帖子

constexpr 构造函数的参数类型 'std::function' 不是文字类型

我正在编写一个简单的 C++ HTTP 服务器框架。在我的Server课堂上,我可以添加Route's。每个路由都包含一个路径、一个 HTTP 方法和一个Controller(这是发出请求时要调用的函数的管道。)该类Controller是通过接收 的列表std::function(或者更准确地说std::function<void(const HTTPRequest&, HTTPResponse&, Context&)>:)来构造的,但大多数有时(或者我应该说每次),这Controller将使用 lambda 函数文本列表进行初始化,如以下代码所示:

server.add_route("/", HTTPMethod::GET,
                {
                    [](auto, auto& response, auto&) {
                        const int ok  = 200;
                        response.set_status(ok);
                        response << "[{ \"test1\": \"1\" },";
                        response["Content-Type"] = "text/json; charset=utf-8";
                    },
                    [](auto, auto& response, auto&) {
                        response << "{ \"test2\": \"2\" }]";
                    },
                }
        );
Run Code Online (Sandbox Code Playgroud)

既然如此,我想将add_route函数设为 a constexpr,因为如果我错了,请纠正我,constexpr函数可以在编译时执行。

所以,当我做一切的时候constexpr,我发现了以下错误:

Controller.cpp:9:1 constexpr …
Run Code Online (Sandbox Code Playgroud)

c++ lambda constexpr c++11 constexpr-function

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

标签 统计

c++ ×1

c++11 ×1

constexpr ×1

constexpr-function ×1

lambda ×1