jjzjj

Conditional

全部标签

c++ - "Conditional"别名模板

在类似非特化模板结构的类型中pointer_traits(即templatestructpointer_traits),存在一个成员别名模板rebind定义为Ptr::rebind,如果存在,否则为其他类型。虽然我已经看到一些关于检查某个成员是否存在的答案,但如何实现一个“条件”别名模板,如pointer_traits::rebind?也就是说,就好像通过以下伪C++:templateusingtype=has_type?int:float;或templateusingtype=if_has_type::type;我考虑过使用类似于https://en.wikibooks.org/wi

c++ - 警告 : second/third operand of conditional has no effect [-Wunused-value]

std::cout我想检查给定值是否可以创建三角形。我收到警告:secondoperandofconditionalexpressionhasnoeffect[-Wunused-value]thirdoperandofconditionalexpressionhasnoeffect[-Wunused-value]怎么了? 最佳答案 您的代码转换为:((std::cout首先,operator有更高的operatorprecedence比operator&&.只有abs(b-c)的值将被打印并且(a部分将与std::ostream::

c++ - 什么时候用逗号来分隔 C++ 中的两个或多个条件比较合适?

Closed.Thisquestionisopinion-based。它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文来回答。6年前关闭。Improvethisquestion我最近发现这是有效的C++语法:intbar=0;for(intfoo=0;bar=0,foo!=10;foo++){//somecode}我以前从未见过逗号用作两个条件的分隔符,所以我查了一下它是如何工作的。我发现用逗号分隔条件列表时,所有条件都会执行,但只有最后一个用作条件。例如:while(function1(),function2(),function3

c++ - std::conditional 的可变模板使用,其中一种类型是实例化失败

我正在尝试构建一个可变模板类。通常,实例化的每一级都需要通过切掉一种类型然后使用其余类型来实例化“下一级”。对于我的最终级别,与其专注于一种类型,我宁愿提供一些基本案例类型并避免重复实际逻辑。我添加了一个std::conditional打开BaseCase当其余类型由空参数包组成时。classBaseCase{};templateclassVariadicClass;templateusingNextLevel=typenamestd::conditional,BaseCase>::type;templateclassVariadicClass{Tthis_level;//whatev

java - 'Conditional expressions can be only boolean, not integral.' 是什么意思?

“条件表达式只能是boolean值,不能是整数。”是什么意思?意思?我不知道Java,我知道C++deffenetly不足以理解它的含义。请帮助(在比较C++和Java项目7子项目1中的http://www.javacoffeebreak.com/articles/thinkinginjava/comparingc++andjava.html中找到) 最佳答案 这意味着您需要一个boolean值作为条件,从整数类型的转换不会是隐式的。而不是if(x)你需要if(x!=0)等前者是一个int,在C++中将隐式转换为bool(通过!=0

c++ - 编译时分派(dispatch) : conditional on valid call

给定以下代码:templateclassJoinedObjectGroup:public_ObjectSpaceHolder,public_ObjectSpaceHolder{public:JoinedObjectGroup(GroupA&groupA,GroupB&groupB):_ObjectSpaceHolder(groupA),_ObjectSpaceHolder(groupB){}templateObjectTypeget(){//Dispatchtoappropriatehandler:onlyoneofthefollowingactuallycompilesas//eit

C++ 重构 : conditional expansion and block elimination

我正在重构大量代码(主要是C++),以删除一些已永久设置为给定值的临时配置检查。因此,例如,我将有以下代码:#include#include#include...if(value1()){//dosomething}boolb=value2();if(b&&anotherCondition){//domorestuff}if(value3()对value的调用返回bool或int。因为我知道这些调用总是返回的值,所以我做了一些正则表达式替换以将调用扩展到它们的正常值://where://value1()==true//value2()==false//value3()==4//TODO

c++ - int 参数为 : conditional expressions ignored? 的意外模板行为

以下代码未按预期工作(或至少如我所料)。我尝试的所有g++版本都在模板递归限制下失败。输出似乎表明条件语句被忽略,并且无论P的值如何都使用最后的elseblock。templateinlineREALconst_pow(REALvalue);templateinlineREALconst_pow(REALvalue){return1.0;}templateinlineREALconst_pow(REALvalue){returnvalue;}templateinlineREALconst_pow(REALvalue){returnvalue*value;}templateinlineR

C++ 条件运算符的多语句

我正在尝试使用一个条件语句,该语句在一个条件下做一件事,但在另一个条件适用时做两件事。考虑以下几点:(h>=0&&h如果“h”设置为25,它会将“hour”正确设置为0。如果“h”设置为12,它会正确地将“hour”设置为12。问题是它在true和false条件下都输出“InvalidHourDetected”。我只希望它在不满足条件时输出。本质上,我想知道是否可以在条件语句中为一个条件做两件事。还试过:(h>=0&&h但这两种情况都没有运行cout。 最佳答案 如果您真的想要这样做,请添加适当的括号并反转赋值和输出插入的顺序(使用

c++ - 如何在编译时检查类型

我提供了使用float或double类型编译程序的选项,但是有一个问题:我需要手动设置GL_FLOAT或GL_DOUBLE,因为我不知道如何执行以下操作:typedeffloatMYTYPE;#ifMYTYPE==float#defineGL_MYTYPEGL_FLOAT//usedforvertexarrayparameters.#else#defineGL_MYTYPEGL_DOUBLE#endif注意:我没有C++11或其他任何东西,只有很好的旧C++。 最佳答案 在C++11中,您可以使用std::conditional和s