草庐IT

enable_if_c

全部标签

c++ - 复制初始化: why move or copy constructor was not called even if copy-elision is turned off?

我的问题不同,因为我可能“知道”复制省略。我正在学习复制初始化。但是,以下代码让我感到困惑,因为我已经使用-fno-elide-contructors-O0选项关闭了复制省略。#includeusingnamespacestd;classtest{public:test(inta_,intb_):a{a_},b{b_}{}test(consttest&other){cout我首先使用命令构建:g++-std=c++11-fno-elide-constructors-O0main.cpp-omain得到如下结果:**showelideconstructors**moveconstruct

c++ - if constexpr 和 C4702(以及 C4100 和 C4715)

有没有办法解决以下问题:此代码生成C4702警告“无法访问的代码”(在带有/std:c++17的VC++15.8上)templateinlineboolMatchMonostate(VariantType&variant){SUPPRESS_C4100(variant);ifconstexpr(std::is_same_v){variant=std::monostate();returntrue;}returnfalse;//!!!unreachableiftheaboveistrue!!!=>C4702}为了抑制C4100的“未引用形式参数”警告,我已经在使用技巧了#defineSU

c++ - 在包含 shared_ptr 的 map 上使用 find_if 会增加引用计数

我正在创建一个程序,它有一个包含shared_ptr的映射。当我尝试使用std::find_if在其中查找元素时,shared_ptr的引用计数会增加。示例:#include#include#include#includeintmain(void){std::map>map;map[1]=std::make_shared(3);map[2]=std::make_shared(5);map[4]=std::make_shared(-2);autoit=std::find_if(map.begin(),map.end(),[](conststd::pair>&elem){std::cout

php - 多个 if() 合而为一

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion这个:if(A||B){X;}if(C&&D){X;}if(F!=G&&H+I===J){X;}可以替换为:if((A||B)||(C&&D)||(F!=G&&H+I===J)){X;}但它是否可以被替换为:if(A||B||C&&D||F!=G&&H+I===J){X;}?(没有括号)语言之间有什么区别吗?P.S:答案不应基于这些示例。

c++ - 如何写多个if条件

我有两个变量A和B我想写一段代码,如果两个变量之一等于151or156or720并且另一个不等于其中一个数字,则第三个变量C=0等于1。例如1)ifA=151andB=700thenC=12)ifA=151andB=720thenC=03)ifA=140andB=700thenC=0这是代码intA=0cin>>A;intB=0cin>>B;intC=0;intDECKlist[3]={151,156,720}for(intd=0;d这样可以吗?还有其他更好的方法吗? 最佳答案 这是一个异或,异或。C++中没有逻辑异或,但您可以针对

c++ - gcc/C++ : If CPU load is low, 那么代码优化没什么用,对吗?

我的同事喜欢使用带“-g-O0”的gcc来构建生产二进制文件,因为如果发生核心转储,调试很容易。他说不需要使用编译器优化或调整代码,因为他发现生产过程中的CPU负载不高,例如30%左右。我问他原因,他告诉我:如果CPU负载不高,瓶颈一定不是我们的代码性能,应该是一些IO(磁盘/网络)。因此,使用gcc-O2无法改善延迟和吞吐量。这也表明我们在代码中没有太多需要改进的地方,因为CPU不是瓶颈。对吗? 最佳答案 关于CPU使用~优化我希望程序中的大多数优化问题都与高于平常的CPU负载相关,因为我们说次优程序做的比理论上需要的多。但这里的

C++-14 使用 enable_if_t 选择整数类型模板化类的成员函数

我正在尝试基于一个完整的类模板参数启用不同的成员函数,如下所示:#includetemplatestructFoo{template=0>intbar(inti)const{returni;}template=0>intbar(inti,intj)const{returni+j;}};intmain(intargc,constchar**argv){Fooa;a.bar(1);Foob;b.bar(1,2);return0;}在c++-14模式下使用gcc5,编译失败,出现如下错误:tools/t1.cpp:Ininstantiationof'structFoo':tools/t1.c

c++ - 带有 if 语句的 auto 函数不会返回值

我制作了一个模板和一个auto函数,用于比较2个值并返回最小值。这是我的代码:#includeusingnamespacestd;//Templatewithavaluereturningfunction:PrintSmallertemplateautoPrintSmaller(TNumOne,UNumTwo){if(NumOne>NumTwo){returnNumTwo;}else{returnNumOne;}}intmain(){intiA=345;floatfB=23.4243;cout但它无法编译,我在VS2015上遇到此错误:错误C3487“int”:所有返回表达式必须推导出

c++ - 为什么这个涉及 std::enable_if 的模板元函数会产生不希望的结果?

我有一个类型特征templatestructis_binary_function:std::false_type{};及其专长templatestructis_binary_function&&!std::is_void_v&&!std::is_void_v&&function_t::isBinaryCallable,function_t>>:std::true_type{};我正在尝试识别具有公共(public)类型定义result_t、parameter1_t和parameter2_t以及静态常量的类isBinaryCallable值为true。然而,下面的代码没有输出我所期望的:

c++ - 将从唯一指针移动到共享指针也会初始化 enable_shared_from_this

当我继承std::enable_shared_from_this,但是我创建了一个unique_ptr,std::enable_shared_from_this里面的weak_ptr也会被初始化吗当我通过std::move或移动构造函数“移动”到shared_ptr时?例如下面的代码会发生什么:#include#includeclassA:publicstd::enable_shared_from_this{public:std::shared_ptrgetA(){returnshared_from_this();}};intmain(){std::unique_ptru(newA()