gpt4 book ai didi

c++ - 使用 std::async 调用采用 unique_ptr 的函数

转载 作者:行者123 更新时间:2023-11-30 04:30:56 25 4
gpt4 key购买 nike

我正在尝试让 std::async 启动一个函数,该函数接受带有 gcc 4.6.2 的 unique_ptr:

#include <type_traits>
#include <memory>
#include <functional>
#include <future>

struct Foo {};

// my gcc does not have this, same definition as in 30.2.6
template<typename T>
typename std::decay<T>::type decay_copy(T&& v) { return std::forward<T>(v); }

int main() {
std::function<int(std::unique_ptr<Foo>)> f = [](std::unique_ptr<Foo>) { return 23; };

std::unique_ptr<Foo> fp{new Foo};
std::unique_ptr<Foo> fp2{std::move(fp)};
// works, this seems to satisfy the requirements of async
f(decay_copy(std::move(fp2)));

// does not work with reference to a deleted function
// std::async(f, std::move(fp2));
}

这是预期的行为还是 gcc 错误?

最佳答案

可能是一个错误。它可以用 g++ 4.7 编译。

关于c++ - 使用 std::async 调用采用 unique_ptr 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424112/

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