gpt4 book ai didi

c++ - 为什么 TBB 不能将 `int` 转换为 `const tbb::atomic&` ,但 std::atomic 可以?

转载 作者:搜寻专家 更新时间:2023-10-31 01:31:26 29 4
gpt4 key购买 nike

我正在尝试构建一个具有许多依赖项的大型项目。阻止它构建的最后一件事(?)是 TBB 未能处理 int 的类型转换进入 const tbb::<unsigned int>& .烦人的是,同一个 Actor 使用std::atomic (特别是 const std::atomic<unsigned int>& )工作得很好。我无法重构代码以使用 std而不是 tbb (它使用了不属于 tbbstd 的其他功能)。

我创建了以下简单的测试用例:

#include <tbb/atomic.h>
#include <atomic>

void good(const std::atomic<unsigned int>& i) {
}

void bad(const tbb::atomic<unsigned int>& i) {
}

int main() {
good(1);
bad(1); // error C2664: 'void bad(const tbb::atomic<unsigned int> &)': cannot convert argument 1 from 'int' to 'const tbb::atomic<unsigned int> &'
}

有谁知道如何解决这个问题(不删除 TBB 的使用)?我需要它在 VS2017 中工作。

编辑:另外,我收到以下错误: Error (active) E0415 no suitable constructor exists to convert from "int" to "tbb::atomic<unsigned int>" Testmain.cpp 15 .所以据推测,如果有合适的 Actor ,类型转换就会成功。我怎样才能添加一个?是否对 tbb/atomic.h 进行了编辑这将启用此类型转换?

最佳答案

已修复!问题是预处理器定义对于我正在使用的 TBB 的 NuGet 发行版来说已经过时了。 VS2017 版本 15.3.2 支持 constexpr,这是启用 __TBB__ATOMIC_CTORS 所必需的。感谢@StoryTeller 为我指明了正确的方向。

修复:Git 克隆 TBB 的最新 src 并构建。 (有趣的是,C++ 中的快捷方式很少是快捷方式)。

关于c++ - 为什么 TBB 不能将 `int` 转换为 `const tbb::atomic<unsigned int>&` ,但 std::atomic 可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45860656/

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