草庐IT

if-constexpr

全部标签

c++ - constexpr c 字符串连接,在 constexpr 上下文中使用的参数

我正在探索我可以从这个答案中采用constexprcharconst*连接多远:constexprtoconcatenatetwoormorecharstrings我有以下用户代码,它准确地显示了我正在尝试做的事情。编译器似乎看不到函数参数(a和b)作为constexpr传入。任何人都可以找到一种方法使我在下面指出的两个不起作用,但实际上可以起作用吗?如果能够通过这样的函数组合字符数组,将会非常方便。templateconstexprautotest1(Aa,Bb){returnconcat(a,b);}constexprautotest2(charconst*a,charconst*

编译时的 C++ constexpr

我认为这个函数应该只在编译时求值是正确的,还是它有运行时成本?templatesize_tconstexprCompID(){returntypeid(T).hash_code();}structFoo{};intmain(intargc,constchar*argv[]){size_tfoo=CompID();return0;} 最佳答案 constexpr函数允许在编译时计算函数,但不要求这样做,所以你的答案是“也许”。这取决于编译器的优化设置。§7.1.5[dcl.constexpr]/7Acalltoaconstexprfu

html和嵌套if语句

我将代码简化为基础知识,并遇到了相同的错误。!DOCTYPEhtml>NewPage}看答案尝试这个NewPage';}}}}else{$_SESSION['MEMID']='';$_SESSION['Password']='';$_SESSION['MemName']='';}?>**修改:-**重定向到另一页,然后替换此页面if($_SESSION['Password']==$_POST['Password']){echo'NewPage';}有了这个if($_SESSION['Password']==$_POST['Password']){echo'location.href="inde

python - if 语句范围内的 C++ 宏未编译

我有一些代码应该是线程安全的python/c++api。我正在使用宏Py_BEGIN_ALLOW_THREADS和Py_END_ALLOW_THREADS,它们扩展以创建保存线程状态并创建锁。我在方法退出之前释放锁;一次在if语句范围内,一次在方法范围内。为什么不能编译?它在第二个Py_END_ALLOW_THREADS宏中生成错误:error:_savewasnotdeclaredinthisscope。uint8_tSerialBuffer::push_msg(){#ifdefined(UBUNTU)Py_BEGIN_ALLOW_THREADS#endifif(_type==ARR

c++ - 如何在 constexpr 函数内部的字符串文字上静态断言条件?

在下面的示例中,如果字符串文字以'v'开头,main可以static_assert,但是验证不能。为什么会这样?有没有办法允许verify对字符串文字中的字符进行static_assert条件?#includetemplateconstexprcharget_first(constchar(&str)[N]){static_assert(N>1,"mustbe>1");returnstr[0];}templateconstexprvoidverify(constchar(&str)[N]){static_assert(str[0]=='v',"muststartfromv");}int

c++ - 使用 enable_if 禁用模板类的模板构造函数

当模板构造函数的参数类型与类型“MyClass匹配时,我试图使用std::enable_if禁用模板类的模板构造函数"这样我就可以使用我的其他构造函数,它允许我用另一个模板的类初始化当前模板的类。templateclassMyClass{public:MyClass(){data.fill(static_cast(0));}template//iwanttodisablethisifArgs=MyClassMyClass(Args&&...args):data{std::forward(args)...}{}templateMyClass(constMyclass&other_size

c++ - c++ 中的高性能代码(继承、指向函数的指针、if)

假设您有一个非常大的图,其节点上有大量处理(例如每个节点数千万次操作)。每个节点的核心例程都是相同的,但根据内部情况会有一些额外的操作。可以有2个这样的条件产生4种情况(0,0)、(1,0)、(0,1)、(1,1)。例如。(1,1)表示两个条件都成立。条件在程序中建立一次(每个节点独立设置一组),并且从那时起永远不会改变。不幸的是,它们是在运行时以完全不可预测的方式确定的(基于通过HTTP从外部服务器接收的数据)。在这种情况下最快的是什么?(考虑到我不知道的现代编译器优化)简单地使用“IF”:如果(条件X)执行附加操作X。使用继承从基类派生四个类(公开方法OPERATION)以进行适当

c++ - constexpr - 函数不能用在常量表达式中

我想在编译时为给定范围内的数学函数计算一个查找表,然后在运行时从该表中检索值。我的代码如下:#include#includetemplateclassLookupTable{public:constexprLookupTable(doublexMin,doublexMax):array(),xMin(xMin),xMax(xMax),dx((xMax-xMin)/(size-1)){for(autoi=0;i((x-xMin)/dx),0),size-1)];}private:doublearray[size];doublexMin;doublexMax;doubledx;};intm

c++ - "if"语句对性能有多大影响?

有一些不同大小的IPTables(例如255或16384或512000!!)。每个表的每个条目都包含一个唯一的IP地址(十六进制格式)和一些其他值。IP总数为800万。所有IPTables的所有IP都排序我们需要每秒搜索IPTable300,000次。我们目前查找IP的算法如下://10_ipTable[i].start&&ip可以看出,在最坏的情况下,给定IP地址的比较次数为_rangeCount*2,“if”语句检查的次数为_rangeCount。假设我想更改searchIPTable并使用更有效的方法在IPTables中查找IP地址。据我所知,对于排序数组,二进制搜索等著名搜索算

c++ - 带有 std::enable_if 和 std::is_default_constructible 的 SFINAE 用于 libc++ 中的不完整类型

我刚刚在使用SFINAE检测模板类型是否默认可构造时观察到libc++的一个奇怪问题。以下是我能够想出的一个最小示例:#include#includetemplatestructDummy;templatestructDummy{};templatestructhas_dummy:std::false_type{};templatestructhas_dummy>::value>>:std::true_type{};intmain(){std::cout{}(){}()它编译并输出预期的行true和false使用libstdc++使用g++或clang++编译时.但是,当我尝试使用li