草庐IT

enable_if_c

全部标签

c++ - 将成员声明与 enable_if 一起使用?

我需要有条件地使用成员声明。templatestructB;templatestructB{voidfoo();};templatestructB{};templatestructA:publicB::value>{usingB::value>::foo();voidfoo(int){}};这显然行不通,因为B::foo没有定义在一半的情况下。我怎样才能做到这一点?拥有B::foo()在A中可见foo(int)旁边的作用域?感谢帮助 最佳答案 这是我的解决方案。我敢肯定它不会是最好的,但它可以完成工作。structA{voidfoo

c++ - noexcept 运算符和 enable_if_t : do they work together?

考虑以下类:structS{templatestd::enable_if_t::value>f()noexcept{}templatestd::enable_if_t::value>g()noexcept{}};正如预期的那样,编译:s.f();这个不是:s.g();令我困惑的是,下面的main是用GCC(6.2)编译的,而不是用clang(3.9)编译的:intmain(){static_assert(noexcept(&S::f),"!");static_assert(noexcept(&S::g),"!");}我会说第二个断言失败是因为特化无效。两个编译器不同意这一点。哪个是正确

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++ - 使用 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++ - "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

c++ - 为什么 SFINAE (enable_if) 从类定义内部工作而不是从外部工作

过去几个小时我一直在努力解决一个非常奇怪的问题(在用SFINAE解决了5-6个其他问题之后,因为我是新手)。基本上在下面的代码中,我想让f()为所有可能的模板实例化工作,但是g()仅在N==2:#include#includetemplateclassA{public:voidf(void);voidg(void);};templateinlinevoidA::f(){std::cout::type*=nullptr>inlinevoidA::g(){std::coutobj;obj.f();obj.g();return0;}当我尝试编译它时,我收到一个关于有3个而不是两个模板参数的错

c++ - 循环 : future iterations overwrite results of previous iterations 中的 If-else 条件

我尝试在items列表中突出显示selectedItem及其children。constQListitems=/*...*/;Item*selectedItem=/*...*/;Q_FOREACH(Item*item,items){if(selectedItem==item){item->setHighlightEnabled(true);//Highlightselecteditem}else{item->setHighlightEnabled(false);//De-highlightotheritems}}item->setHighlightEnabled方法递归地对子项执行相同