首先看如下代码:
1 #include <zthread/ThreadLocal.h> 2 3 int main() 4 { 5 ZThread::ThreadLocal<unsigned int> value; 6 value.set(0); 7 value.set(value.get() + 1); 8 return 0; 9 }
在Windows下编译的话你会发现如下错误(编译器CL.exe)
e:...\include\zthread\threadlocal.h(304) : error C4716: "ZThread::ThreadLocal,ZThread::ThreadLocalImpl::UniqueChildValueFn,ZThread::ThreadLocalImpl::InheritableValueFn>::Value::operator=": must return a value.
解决方案:点此链接
我上stackoverflow问了一下找到了原因
其实就是因为ZThread确实是上了年纪的库了,一些旧的编译器能接受的语法,在新的编译器下就是ERROR
把zthread/ThreadLocal.h大概第304行的代码const Value& operator=(const T& v) { value = v; }
修改为const Value& operator=(const T& v) { value = v; return *this; }
好了 大功告成
时间: 2024-10-20 15:27:24