草庐IT

atomic_bool

全部标签

c++ - 为什么当 bool = true 时补码运算符不起作用?

我已经编写了这个C++程序,但我无法理解为什么它在第三个cout语句中打印1。#includeusingnamespacestd;intmain(){boolb=false;cout输出:011为什么不打印以下内容?010 最佳答案 这是由于C遗留的运算符机械化(还记得~是bitwise补码)。~的整数操作数在执行操作之前被提升为int,然后转换回bool。所以你得到的是(使用无符号32位表示)false->0->0xFFFFFFFF->true。然后true->1->0xFFFFFFFE->1->true。您正在寻找!运算符来反转

c++ - 为什么当 bool = true 时补码运算符不起作用?

我已经编写了这个C++程序,但我无法理解为什么它在第三个cout语句中打印1。#includeusingnamespacestd;intmain(){boolb=false;cout输出:011为什么不打印以下内容?010 最佳答案 这是由于C遗留的运算符机械化(还记得~是bitwise补码)。~的整数操作数在执行操作之前被提升为int,然后转换回bool。所以你得到的是(使用无符号32位表示)false->0->0xFFFFFFFF->true。然后true->1->0xFFFFFFFE->1->true。您正在寻找!运算符来反转

c++ - 为什么 std::weak_ptr<> 不提供 bool 转换?

C++11的std::shared_ptr提供了一种bool运算符。operatorunspecified-bool-type()const;(由于bool类型的dangersfromimplicitcasting,它不是一个直接的operatorbool()const。)为什么std::weak_ptr没有类似的运算符?我发现自己经常打字if(!wp.expired())当我想打字时if(wp)为什么weak_ptr没有bool转换? 最佳答案 if(!wp.expired())在多线程代码中几乎总是错误检查,因为直接在if语句之

c++ - 为什么 std::weak_ptr<> 不提供 bool 转换?

C++11的std::shared_ptr提供了一种bool运算符。operatorunspecified-bool-type()const;(由于bool类型的dangersfromimplicitcasting,它不是一个直接的operatorbool()const。)为什么std::weak_ptr没有类似的运算符?我发现自己经常打字if(!wp.expired())当我想打字时if(wp)为什么weak_ptr没有bool转换? 最佳答案 if(!wp.expired())在多线程代码中几乎总是错误检查,因为直接在if语句之

c++ - 具有 std::atomic 成员变量的类的复制构造函数/赋值运算符出错

我有一个像下面这样的类(class)。#includestaticconstlongmyValue=0;classSequence{public:Sequence(longinitial_value=myValue):value_(initial_value){}private:std::atomicvalue_;};intmain(){SequencefirstSequence;SequencesecondSequence=firstSequence;return0;}我收到这样的编译错误,test.cpp:21:36:error:useofdeletedfunction‘Seque

c++ - 具有 std::atomic 成员变量的类的复制构造函数/赋值运算符出错

我有一个像下面这样的类(class)。#includestaticconstlongmyValue=0;classSequence{public:Sequence(longinitial_value=myValue):value_(initial_value){}private:std::atomicvalue_;};intmain(){SequencefirstSequence;SequencesecondSequence=firstSequence;return0;}我收到这样的编译错误,test.cpp:21:36:error:useofdeletedfunction‘Seque

c++ - std::shared_ptr 和 std::experimental::atomic_shared_ptr 有什么区别?

我阅读了followingAntonyWilliams的文章,据我了解,除了std::experimental::atomic_shared_ptr中std::shared_ptr中的原子共享计数之外指向共享对象的实际指针也是原子的?但是当我读到安东尼的书中关于C++Concurrency的lock_free_stack的引用计数版本时在我看来,同样适用于std::shared_ptr,因为应用了std::atomic_load、std::atomic_compare_exchnage_weak等函数到std::shared_ptr的实例。templateclasslock_free_

c++ - std::shared_ptr 和 std::experimental::atomic_shared_ptr 有什么区别?

我阅读了followingAntonyWilliams的文章,据我了解,除了std::experimental::atomic_shared_ptr中std::shared_ptr中的原子共享计数之外指向共享对象的实际指针也是原子的?但是当我读到安东尼的书中关于C++Concurrency的lock_free_stack的引用计数版本时在我看来,同样适用于std::shared_ptr,因为应用了std::atomic_load、std::atomic_compare_exchnage_weak等函数到std::shared_ptr的实例。templateclasslock_free_

c++ - 警告 C4800 : 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)

当我在VisualStudio2008中编译以下代码片段时,我收到了这个警告。BOOLCPlan::getStandardPlan()const{returnm_standardPlan;}boolm_bStandardPlan;if(plan!=NULL){//AssignthevaluestotheColaobjectpoCola->m_lPlanId=plan->getPlanId();poCola->m_lPlanElementId=plan->getPlanElementId();poCola->m_lPlanElementBaseId=plan->getPlanElemen

c++ - 警告 C4800 : 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)

当我在VisualStudio2008中编译以下代码片段时,我收到了这个警告。BOOLCPlan::getStandardPlan()const{returnm_standardPlan;}boolm_bStandardPlan;if(plan!=NULL){//AssignthevaluestotheColaobjectpoCola->m_lPlanId=plan->getPlanId();poCola->m_lPlanElementId=plan->getPlanElementId();poCola->m_lPlanElementBaseId=plan->getPlanElemen