gpt4 book ai didi

c++ - 如何从 std::function 推断返回值类型?

转载 作者:搜寻专家 更新时间:2023-10-31 02:13:45 25 4
gpt4 key购买 nike

我想使用 std::function 使返回值类型通用,但它不起作用,代码:可以找到可调试代码:http://cpp.sh/5bk5

class Test
{
public:
template <typename R, typename F = std::function<R()>>
R f(F&& op) {
op();
}

void t() {
int a = 10;
f([this, a]() { return "chars"; });
}
};

int main()
{
t::Test test;
test.t();
return 0;
}

最佳答案

您可以避免使用 Template/std::function 方式并使用 auto 作为返回类型。

如果你能编译 C++14,那很容易

// Example program
#include <iostream>

class Test
{
public:
Test(){ }

template <typename F>
auto f (F && op)
{ return op(); }

void t()
{ std::cout << f([this]() { return "chars"; }) << std::endl; }
};


int main()
{
Test test;

test.t();

return 0;
}

如果您只能编译 C++11,则必须为 Test::f() 使用 decltype()

  template <typename F>
auto f (F && op) -> decltype( op() )
{ return op(); }

关于c++ - 如何从 std::function 推断返回值类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900739/

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