gpt4 book ai didi

c++ - 将重载函数(如 std::stoll)打包到 std::function

转载 作者:太空狗 更新时间:2023-10-29 23:40:04 33 4
gpt4 key购买 nike

我很难将 std::stoll 打包到 std::function 中。天真

std::function<std::int64_t(std::string const&)> obj = std::stoll;

失败,因为 std::stoll 是两个函数的重载(cppreference 没有提及[在询问时]),一个采用 std::string 另一个 std::wstring 作为第一个参数。那么我如何得到我想要的东西呢?

我知道我可以改用调用 std::stoll 的 lambda,但我正在寻找以下形式的解决方案

auto parser = ???
std::function<std::int64_t(std::string const&)> obj{parser};

最佳答案

您可以转换重载函数指针来消除歧义:

function<int64_t(string const&)> obj =
static_cast<int64_t(*)(string const&)>(stoll);

编辑:您还需要绑定(bind)默认参数,因为 stoll 是一个三参数函数,而您正试图让它只接受一个参数:

function<int64_t(string const&)> obj =
std::bind(static_cast<int64_t(*)(string const&, size_t*, int)>(stoll),
placeholders::_1, nullptr, 10);

关于c++ - 将重载函数(如 std::stoll)打包到 std::function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23366879/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com