草庐IT

bool_constant

全部标签

C++ 变体转换构造函数与 bool

关于cppreference(4)转换构造函数说明如下:Convertingconstructor.ConstructsavariantholdingthealternativetypeT_jthatwouldbeselectedbyoverloadresolutionfortheexpressionF(std::forward(t))iftherewasanoverloadofimaginaryfunctionF(T_i)foreveryT_ifromTypes...inscopeatthesametime,exceptthat:AnoverloadF(T_i)isonlyconsi

c++ - "constant"复杂度的真正含义是什么?时间?复制/移动的数量?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter为指导。9年前关闭。我可以想到C++中的三个操作,它们在某种意义上可以被描述为具有“恒定”的复杂性。我已经看到一些关于这意味着什么的争论(*),在我看来,我们可以说“所有这些操作都是恒定的,但有些比其他操作更恒定”:-)(编辑2:如果您已经认为自己知道答案,请在过早进入之前阅读此问题的一些辩论:Whatdatastructure,exactly,aredequesinC++?很

c++ - extern const char* const SOME_CONSTANT 给我链接器错误

我想像这样在API中提供一个字符串常量:externconstchar*constSOME_CONSTANT;但是如果我在我的静态库源文件中将它定义为constchar*constSOME_CONSTANT="test";当链接到该库并使用SOME_CONSTANT时,我遇到链接器错误:Error1errorLNK2001:unresolvedexternalsymbol"charconst*constSOME_CONSTANT"(?SOME_CONSTANT@@3QBDB)从externconstchar*const声明和定义中删除指针常量(第二个const关键字)使其工作。如何使用

c++ - 在 c/c++ 中添加两个 bool 值

我试着把bool值加在一起,说:booli=0,j=0,k=0;cout结果为4,这意味着结果被转换为'int'值。我想问:这是C/C++的标准操作吗?编译器是否总是保证在溢出时将临时值转换为更大的类型?谢谢!感谢您的回答,一个跟进问题:说,如果我这样做:unsignedshorti=65535,j=65535;cout结果是4。为什么它被提升为'int'? 最佳答案 导致转换的不是溢出,而是你做算术的事实。在C++(以及行为起源的C)中,内置类型的基本算术运算符的操作数在进行计算之前经过一组定义明确的提升。这些规则中最基本的(有些

c++ - <错误 C2059 : syntax error : 'constant' > when compiling with const int

编译以下代码时出现以下错误:3>c:\hedge\hedge\hedge\AisTarget.h(22):errorC2059:syntaxerror:'constant'3>c:\hedge\hedge\hedge\AisTarget.h(22):errorC2238:unexpectedtoken(s)preceding';'#if!defined(AisTarget_h)#defineAisTarget_h#include"GeneralAviationItems.h"#includenamespaceHEDGE{usingnamespaceGeneralAviation;cla

bool 值的 C++ 短路

我是C++的新手,很好奇编译器如何处理bool值的惰性求值。例如,if(A==1||B==2){...}如果A确实等于1,那么B==2部分是否曾经计算过? 最佳答案 不,B==2部分未被评估。这叫做short-circuitevaluation.编辑:作为RobertC.Cartainorightlypointsout,如果逻辑运算符重载,则不会发生短路评估(话虽如此,我不明白为什么有人会重载逻辑运算符)。 关于bool值的C++短路,我们在StackOverflow上找到一个类似的问题

c++ - 显式运算符 bool 错误

我得到CompilerErrorC2071当我尝试实现explicitoperatorbool时:classC{public:explicitoperatorbool()const{return!!*this;}};为什么?我该如何解决这个问题?我正在使用VisualStudio2012RC。 最佳答案 VisualStudio2012不支持显式转换运算符,请参阅C++11FeaturesinVisualC++11.这些文章讨论了safeboolidiom:http://www.artima.com/cppsource/safebo

c++ - 三元运算符中的 integral_constants

MSVC和clang/gcc对于是否可以在三元运算符中使用两个不同的整型常量(以及它们是否具有common_type)存在分歧:#includeintmain(){returnfalse?std::integral_constant():std::integral_constant();}上面的代码片段在clang和gcc中编译得很好,但在MSVC中却不行。根据标准,正确的行为是什么?如果是clang/gcc行为,那么用于推断这两种不同类型的公共(public)类型的转换序列是什么? 最佳答案 tldr;代码格式正确。条件表达式的类

c++ - 将流运算符 >> 评估为 bool 值

以下代码在VisualStudio2008中编译但在VisualStudio2013及更高版本中失败。std::stringstr("foo");std::stringstreamss(str);floatf=0;if((ss>>f)==false)std::cout错误信息是errorC2678:binary'==':nooperatorfoundwhichtakesaleft-handoperandoftype'std::basic_istream>'(orthereisnoacceptableconversion)并通过如下更改成功修复:if(!(ss>>f))std::cout

c++ - 检查 bool 是否在混合 C/C++ 中定义

所以我在继承一些代码时遇到了问题。此代码在纯C环境中构建良好,但现在我需要使用C++来调用此代码。标题problem.h包含:#ifndef_BOOLtypedefunsignedcharbool;staticconstboolFalse=0;staticconstboolTrue=1;#endifstructastruct{boolmyvar;/*andabunchmore*/}当我将其编译为C++代码时,出现errorC2632:'char'followedby'bool'isillegal如果我将#include"problem.h"包装在extern"C"{...}中,我会得到