task' has initializer but incomplete type"错误-6ren"> task' has initializer but incomplete type"错误-我有下面的代码,给出了标题中提到的错误。它是此处提供的示例的简化版本: cppreference #include #include int main() { std::packaged_-6ren">
gpt4 book ai didi

c++ - 为什么我得到一个 "variable ' std::packaged_task task' has initializer but incomplete type"错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:40 34 4
gpt4 key购买 nike

我有下面的代码,给出了标题中提到的错误。它是此处提供的示例的简化版本:

cppreference

#include <thread>
#include <future>

int main()
{
std::packaged_task<int()> task([] {return 1;});
return 0;
}

但是,我认为正如我在此处的另一个答案中指定的那样将包任务的类型指定为 int() 那么它会被正确解析,但事实并非如此。

谁能发现我做错了什么?

最佳答案

尝试:

g++ -E x.cpp > output.txt

它将运行预处理器,这样您就可以看到编译器得到了什么。

如果我从 cygwin 运行它,只有 std::packaged_task 的预声明出现在输出中,但没有定义。 future 文件包含以下预处理器条件:

#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) \
&& defined(_GLIBCXX_ATOMIC_BUILTINS_4)

在我的 cygwin 安装中,宏 _GLIBCXX_HAS_GTHREADS 没有定义,所以 #if 中的所有内容都被删除了。或许你也会遇到同样的情况。

关于c++ - 为什么我得到一个 "variable ' std::packaged_task<int> task' has initializer but incomplete type"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19121094/

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