我在这个主题中找到了HowardHinnant的答案。 https://www.w3schools.com/js/
不幸的是,它似乎使用了以下宏,Microsoft编译器(VS2015 x64)似乎不支持,代码需要是C ++ 11和跨平台。
_LIBCPP_BEGIN_NAMESPACE_STD
_LIBCPP_END_NAMESPACE_STD
我试图将其更改为
namespace std{
...
}
然后编译器会抱怨以下消息。
严重性代码描述项目文件行列源抑制 状态工具错误C2244' std :: unique_lock< _Mutex> :: unique_lock':无法 将函数定义与现有函数匹配 声明shared_mutex_test c:\ documents \ visual studio 2015 \ projects \ shared_mutex_test \ shared_mutex.hpp 1217 1 Build
问题,如何解决这个问题。我需要shared_mutex / shared_lock功能,我必须符合C ++ 11。我们决定不引入像Boost这样的更大的库,因此如果我能让HowardHinnant的实现跨平台工作,那将是最佳解决方案。
非常感谢。
聚苯乙烯。 我还没有足够高的声誉来评论封闭的问题,因此我被迫打开这个新线程。随意将其移动到另一个线程中。
答案 0 :(得分:0)
只需删除所有失败的代码即可解决问题。它似乎干扰了unique_lock的可用c ++ 11实现。因为我可以使用C ++ 11,所以我不需要那部分代码。
要完全解决它,可能需要实现完整的unique_lock类。