草庐IT

VARIANT_BOOL

全部标签

c++ - 为什么不允许 std::variant 与其替代类型之一进行相等比较?

例如,相等比较std::variant应该很有帮助用T1或T2.到目前为止,我们只能与相同的变体类型进行比较。 最佳答案 一个变体可能有多个相同类型的拷贝。例如。std::variant.std::variant的给定实例比较等于另一个当且仅当它们持有相同的变体备选方案并且所述备选方案的值比较相等。因此,一个std::variant与index()0比较不等于std::variant与index()1,尽管活跃的变体替代品具有相同的类型和相同的值(value)。因此,标准没有实现通用的“与T比较”。但是,您可以使用中的其他辅助实用程

c++ - 使用 volatile bool 强制另一个线程等待是否安全? (C++)

我读到的关于volatile的所有内容都说它永远不安全,但我仍然倾向于尝试它,而且我还没有看到这种特定情况被宣布为不安全。我有一个单独的线程来渲染场景,从主模拟线程中提取数据。这没有同步,但工作正常。问题在于,当程序退出时,渲染器需要停止从模拟线程中提取数据,然后模拟线程才能安全地清理自身,而不会导致渲染器尝试读取无效内存。为此,我让渲染器在其线程中无限运行:volatileboolstillRendering;voidRenderThreadFunction(){stillRendering=true;while(programRunning){renderer->render();

c++ - 如何 memset 一个 bool 数组?

void*memset(void*dest,intc,size_tcount)第三个参数是数组中的字符数或字节数。你如何memset一个bool数组,比如boolbArray[11]?MSDN说:“安全说明-确保目标缓冲区有足够的空间容纳至少count个字符。” 最佳答案 std::fill()应尽可能使用memset()。std::fill(std::begin(bArray),std::end(bArray),value);如果bArray是指针,则应使用以下内容:std::fill(bArray,bArray+arraySiz

c++ - 如何在 "two dimensional manner"中使用 boost::variant 定义异构 std::map

我很乐意得到并建议如何以“二维方式”处理boost::variant。听起来很奇怪,但让我的代码说得更多(希望如此):我编写了一个名为Parameter的类:templateclassParameter:publicquantity{...}上面定义的我的参数的示例用法:ParameterSampleParameter1;ParameterSampleParameter2;正如我试图通过上面的示例解释的那样,我可以使用boost::units::si::???和不同的数据类型(如double,short)定义多个参数类型,int等我的目标是构建一个std::map容器,它可以存储任何P

c++ - 我可以在 C++ 中获得非专用 vector<bool> 类型吗?

Avector专门用于减少空间消耗(每个元素1位),但访问速度比vector慢.有时我使用vector出于性能原因,但如果我转换char到bool,我的编译器(VisualC++)可能会生成一个C4800我不喜欢的警告。此外,我认为vector如果我将其视为未专门化的vector,则在语义上是错误的.那么,我能得到一个真正的非专业vector吗?键入C++? 最佳答案 不,你不能得到一个非特化的std::vector.vector是你最好的选择,因为你已经知道了。要绕过警告,只需使用bool表达式:boolb1=v[0]!=0;bo

c++ - 为什么 iostream 对象不重载 operator bool?

在thisanswer我谈到了使用std::ifstream对象到bool的转换来测试流是否仍处于良好状态。我查看了Josuttis的书以获取更多信息(如果您感兴趣,请参阅第600页),事实证明iostream对象实际上重载了operatorvoid*。当流是错误的(可以隐式转换为false)时它返回一个空指针,否则返回一个非空指针(隐式转换为true)。他们为什么不直接重载operatorbool? 最佳答案 看起来C++0x标准部分27.4.4.3有答案(强调我的)。operatorunspecified-bool-type()

bool 值或函数调用表达式中的 C++ 惰性求值

快速提问,在C++中这个表达式是否被惰性求值?boolfunca();boolfuncb();funca()||funcb();//lineinquestion显然这(可能)只是以下内容的简写:boolfunca();boolfuncb();if(!funca()){funcb();}//orevenmoreconcisely:if(!funca())funcb();C++会像我希望的那样评估有问题的原始行吗?谢谢。 最佳答案 在C/C++中,逻辑运算符短路。在中||b如果a为真b不计算,如果a为假则在a&&b中b未计算。注意:这只

c++ - Boost.Program_Options : When <bool> is specified as a command-line option, 什么是有效的命令行参数?

鉴于Boost.Program_Options的以下简单使用:boost::program_options::options_descriptionoptions("Options");options.add_options()("my_bool_flag,b",boost::program_options::value(),"Samplebooleanswitch)");...哪些命令行参数将评估为false,哪些评估为true?(即假设程序名为“foo”,并在命令行上执行为:foo-b?...问号是其他一些文本的占位符:所有可能的文本选项将正确评估为false,什么是true?)

c++ - 错误 : passing 'const T' as 'this' argument of 'bool T::operator<(T)' discards qualifiers

#include#include#includeclassMyData{public:intm_iData;booloperatormyvector(2,MyData());myvector[0].m_iData=2;myvector[1].m_iData=4;std::sort(myvector.begin(),myvector.end());}尝试编译这个给出:error:passing'constMyData'as'this'argumentof'boolMyData::operator 最佳答案 比较运算符将在类实例的常量引

c++ - 如何防止从 char 数组到 bool 的隐式转换

structFoo{voidsetBar(boolbar_){bar=bar_;}boolbar;};intmain(){Foof;f.setBar("true");}由于类型转换,上述代码编译成功,即使在需要bool的地方传递了一个char数组。是否有可能导致这段代码编译失败?(首选C++03解决方案,因为我工作场所的编译器很古老。)我查看了StackOverflow上的以下相关问题,但它们并没有完全解决这个问题。PreventingimplicitconversioninC++,Whydoesthecompilerchoosebooloverstringforimplicittyp