gpt4 book ai didi

C++17 Using Class Template Argument Deduction 关于保存函数返回值的类型的指南

转载 作者:太空狗 更新时间:2023-10-29 20:51:06 25 4
gpt4 key购买 nike

我设计了一个对象,它接受一个函数及其参数,并将函数的返回值保存在对象中以供稍后检索。

我的目标是为这个对象创建一个推导指南,允许我在对象的构造函数中省略函数的返回类型。

#include <utility>

template <typename Ret> class footure {
public:
template <typename Function, typename... Args>
explicit footure(Function &&fun, Args &&... args) {
// ...
value_ = fun(std::forward<Args>(args)...);
// ...
}

Ret get() { return value_; }

private:
Ret value_;
};

int add(const int a, const int b) { return a + b; }

int main() {
auto f = footure<int>(add, 2, 3); // Remove <int>
auto r = f.get();
}

我查找了诸如 this PR 之类的资源尝试解决这个问题,但我想不出解决方案。

最佳答案

你好像在找 std::invoke_result .

template <typename Function, typename... Args>
explicit footure(Function&&, Args&&...) -> footure<std::invoke_result_t<Function&&, Args&&...>>;

不要忘记添加标题 <type_traits> .

关于C++17 Using Class Template Argument Deduction 关于保存函数返回值的类型的指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51742036/

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