为什么我会收到"variable 'std::packaged_task<int> task' has initializer but incomplete type"错误
Why do I get an "variable 'std::packaged_task<int> task' has initializer but incomplete type" error
我有以下代码,它给出了标题中提到的错误。 它是此处提供的示例的精简版本:
CPP 首选项
#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#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 使用"Task"函数指针队列定义作业管理器
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- Visual Studio C++ Project File CustomBuild Task: Filter Outp
- 使用"std::enable_if_t" "function template has already been defined"
- 使用 GraphicsPath::AddString() 抱怨"class 'GraphicsPath' has no member 'AddString'"
- 'Project.exe has triggered a breakpoint.'
- C++ 结构数组 - "This declaration has no storage class or type specifier"
- Rcpp 'candidate function has different number of parameters (expected 0 but has 1)'
- 在 EAX 模式下加密数据时"program has stopped working"
- "xvalue has identity"是什么意思?
- 实现多线程后"Project.exe has triggered a breakpoint"
- 为什么删除执行组件指针会导致"Program.exe has triggered a breakpoint"
- "Field has incomplete type"引用自己的类的问题
- 如何在过载时强制"statement has no effect"警告==
- C++ 中的"this declaration has no storage class or type specifier"错误
- 如何在链接器设置和搜索目录更改后修复" '::iswblank' has not been declared"
- MacPorts:"Error: clang-4.0 has been replaced by clang-8.0; please install that instead",但我已经安装了clang
- 提升序列化仅适用于主要?当我在其他对象中使用时,继续说"has no member named ‘serialize’"
- 为什么我会收到"variable 'std::packaged_task<int> task' has initializer but incomplete type"错误