草庐IT

bool_constant

全部标签

c++ - 在 bool 值上使用按位非运算符 (~) 是否会调用未定义的行为?

如果C++程序将按位非运算符(~)应用于bool值,是否会调用未定义行为?例如下面的程序是否定义明确?boolf=false;boolf2=~f;//isf2guaranteedtobetrue,oristhisUB?boolt=true;boolt2=~t;//ist2guaranteedtobefalse,oristhisUB?(是的,我知道有一个!运算符更适合这类事情;出于这个问题的目的,我们将忽略它的存在;)) 最佳答案 5.3.1/10Theoperandof~shallhaveintegralorunscopedenum

c++ - 非 bool 值的短路

缩短三元运算符的用法是否安全:process_ptr(ptr?ptr:default_ptr);短路:process_ptr(ptr||default_ptr);在C和C++中?换句话说,我们是否保证从表达式中得到eitherptrordefault_ptr,或者也许如果表达式在逻辑上为真,是否允许表达式产生任意“逻辑真”值?这是您会在整个Perl代码中看到的那种代码,但我很少在C/C++中看到它,这是我问题的原始基础。 最佳答案 第二个表达式的计算结果为1或0.引用C11标准草案:6.5.14LogicalORoperatorTh

c++ - 为什么 std::foreach 不能与 std::vector<bool> 一起使用?

这个问题在这里已经有了答案:Whyisn'tvectoraSTLcontainer?(6个答案)关闭4年前。我有以下代码片段,它采用std::vectorlist并在所有vector元素中写入一个零。此示例运行良好。#include#include#includeintmain(){std::vectorlist{1,1,2};autoreset=[](int&element){element=0;};autoprint=[](intelement){std::cout如果我将vector类型从int更改为bool,代码将无法编译。#include#include#includeint

c++ - 编译器错误 "character constant too long for its type"。怎么了?

我有一些我正在尝试处理的代码...#include#includeintmain(){std::cout";std::stringchoice;std::getline(cin,choice);if(choice=='hamburger'||choice=='Hamburger'){std::cout";std::stringopt;std::getline(cin,opt);if(opt=='y'||opt=='Y'||opt=='yes'||opt='Yes'){std::cout这是改编self编写的Bash脚本,是我的第一个C++程序之一。当我编译它时,它出现了这些错误...t

c++ - 模板编译失败 : 'double' is not a valid type for a template constant parameter

templateclassLowerBoundedType{};templateclassvectorelement{};templateclassvectorelement{typedefLowerBoundedTypetype;};有错误:error:'double'isnotavalidtypeforatemplateconstantparameter 最佳答案 唯一对非类型模板参数有效的数字类型是整数和枚举。因此,您不能拥有double类型的非类型模板参数。 关于c++-模板编译

c++ - std::array<bool> 与 std::vector<bool> 的行为

std::array实现与std::vector相同的位封装内存优化是吗?谢谢! 最佳答案 不,std::array没有bool类型的特化。您可以找到更多详细信息here,但是,基本上,std::array只是一个:anaggregatetypewiththesamesemanticsasastructholdingaC-stylearrayT[N]在bool的情况下,您可能会将其视为C风格的bool数组,而不是任何类型的位集。 关于c++-std::array与std::vector的

c++ - 识别模板中的值是 bool

这个简短的C++17程序:#includetemplatevoidoutput(Tx){ifconstexpr(std::is_integral::value){std::cout(x)有这样的输出:65isintegral1isintegral在名为output的模板函数中,如何检测到参数x是bool值而不是数字?计划是用std::cout输出值,但前提是类型是bool. 最佳答案 std::is_integral检查类型是否为以下类型之一:bool、char、char16_t,char32_t,wchar_t,short,int

Java 互操作性 : how to declare a compile-time array constant in Kotlin?

我有这个Javaannotationdeclaration并想在Kotlin中使用它classCurlCommand{Parameter(names="-groups",description="Comma-separatedlistofgroupnamestoberun")vargroups:Array?=null}编译器报告TYPE_MISMATCH必需:kotlin.Array找到:kotlin.String我试过了Parameter(names=Array(1,{i->"-groups"}),description="Comma-separatedlistofgroupname

Java 互操作性 : how to declare a compile-time array constant in Kotlin?

我有这个Javaannotationdeclaration并想在Kotlin中使用它classCurlCommand{Parameter(names="-groups",description="Comma-separatedlistofgroupnamestoberun")vargroups:Array?=null}编译器报告TYPE_MISMATCH必需:kotlin.Array找到:kotlin.String我试过了Parameter(names=Array(1,{i->"-groups"}),description="Comma-separatedlistofgroupname

c++ - 同时等待套接字和 bool var 的可移植 C++11 方法

我有一个无限循环的线程,它从套接字接收和处理数据。我希望该线程阻塞(sleep),直到数据在套接字上可供读取或“退出”bool变量变为真(由不同的线程设置)。是否有可能以一种可移植的方式做到这一点,无需轮询和使用任何第三方库(当然除了套接字库)?如果无法以可移植的方式执行操作,那么在Windows下执行此操作的最佳方式是什么(仍然没有轮询和第三方库)?示例代码:boolexit=false;//or"std::atomicexit"oranythingelsevoidfn(){SOCKETs;//initsocket,establishconnection,etcfor(;;){//T