我正在处理我给出的示例c ++,并且我正在尝试为该程序添加线程。
如果程序中的任何地方我添加以下内容:
#include <thread>
void someFunction () {
std::thread t([]() {std::cout << "Hello" << std::endl; });
}
无法使用错误进行编译:
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\thread(48): error C3083: 'std': the symbol to the left of a '::' must be a type
1> C:\Users\Dennis Jeong\Documents\Stanford\CS148\cs148-raytracer\common\RayTracer.cpp(20): note: see reference to function template instantiation 'std::thread::thread<RayTracer::Run::<lambda_d2fd5ec539e104442fc3c5987873ac7f>,,void>(_Fn &&)' being compiled
1> with
1> [
1> _Fn=RayTracer::Run::<lambda_d2fd5ec539e104442fc3c5987873ac7f>
1> ]
但是,如果我在visual studio中创建一个新的c ++项目,这是有效的。
错误可能在哪里?
如果有用,则cmake文件位于: https://gist.github.com/w0nche0l/aef2a112b596f489705441f429e725b5
编辑:另外,我确定它不是导致此错误的lambda语法,因为我可以在没有线程的情况下创建和运行lambda。