gpt4 book ai didi

c++ - 可调用结果类型的推导

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:02 25 4
gpt4 key购买 nike

我尝试推断可调用模板参数的类型,不幸的是没有成功:

template<typename callable, typename T_out >
class A
{};

template<typename callable>
auto make_A( callable f )
{
return A<callable, typename std::result_of_t<callable> >{ f };
}

int main()
{
make_A( []( float f ){ return f;} );
}

上面的代码会导致以下错误:

error: implicit instantiation of undefined template 'std::__1::result_of<(lambda at /Users/arirasch/WWU/dev/xcode/tests/tests/main.cpp:31:11)>'
template <class _Tp> using result_of_t = typename result_of<_Tp>::type;

有人知道怎么解决吗?

非常感谢。

最佳答案

您需要将参数列表传递给std::result_of ,否则无法判断返回类型(毕竟 operator() 可以重载)。

return A<callable, std::result_of_t<callable(float)> >{ f }

(前提是 A<callable, std::result_of_t<callable(float)> 可以用 f 构造,示例不是这种情况)

关于c++ - 可调用结果类型的推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40264608/

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