草庐IT

enable_if_c

全部标签

c++ - C++ 中的 If 语句,主体为空 : is condition guaranteed to be evaluated?

鉴于此声明(作为旁注,这不是我喜欢的编码风格)if(doSomething()){}“C++标准”是否保证函数被调用?(它的返回值对执行路径没有影响,所以编译器可能会遵循捷径评估的思想并将其优化掉。) 最佳答案 不涉及短路运算符,因此如果在不消除副作用的情况下无法优化函数,则可以保证调用该函数。引用C++11标准:[...]conformingimplementationsarerequiredtoemulate(only)theobservablebehavioroftheabstractmachineasexplainedbel

c++ - 'typename Enable = void' 是什么意思?

我发现typenameEnable=void定义在ProtoBuf中,templatestructRefTypeTraits;但是,我找不到Enable用于此headerfile,这让我很困惑。typenameEnable=void在模板中是什么意思? 最佳答案 是允许SFINAE具有模板特化,例如:templatestructRefTypeTraits::value>>{//...specializationforTwhichrespectscondition};从C++20开始,我们可以特化concepts以避免这个需要额外的模

c++ - SFINAE : Know if a function already exist or no

基本上,我想编写这样的代码:std::vectora={54,25,32.5};std::vectorb={55,65,6};std::cout这是不可能的,因为operator没有过载所以,我编写了一个函数来完成这项工作:templatetypenameT,typename...Args>std::enable_if_t>>,std::ostream>&operatorconst&t){for(autoconst&e:t)out效果很好,但我对字符串有疑问。因为字符串是可迭代的并且字符串有operator功能。所以我测试了另一个特征,比如!is_streamable_out&&_is

c++ - SSE 内在函数 - 比较 if/else 优化

我一直在尝试优化一些处理原始像素数据的代码。目前代码的C++实现速度太慢,所以我一直在尝试在MSVC2008中使用SSE内在函数(SSE/2/3不使用4)。考虑到这是我第一次深入挖掘,我'我们取得了一些不错的进展。不幸的是,我遇到了一段让我卡住的特定代码://Beginbad/suboptimalSSEcode__m128ivnMask=_mm_set1_epi16(0x0001);__m128ivn1=_mm_and_si128(vnFloors,vnMask);for(intm=0;m目前,我在这部分默认使用C++实现,因为我无法完全理解如何使用SSE对其进行优化-我发现SSE内在

c++ - --enable-auto-import 警告的目的

我正在尝试编译以下程序:#includeintmain(){std::cout当我编译它时,我得到这个消息:C:\programs>g++test.cppInfo:resolvingstd::coutbylinkingto__imp___ZSt4cout(auto-import)c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe:warning:auto-importinghasbeenactivatedwithout--enable-auto-importspecifiedonthecommandl

c++ - 为什么 Visual Studio 不允许我在 enable_if 中使用模板化的 constexpr 函数?

所以我将其归结为最小的、完整的、可验证的示例,而且VisualStudio2015似乎不允许我使用模板化的constexpr在enable_if中运行.例如:templateconstexprboolcondition(){returnsizeof(T)>1;}给我错误:errorC2995:enable_if::typetest(void):functiontemplatehasalreadybeendefined当我尝试在替换中使用它时,失败不是这样的错误编译:templateenable_if_t()>test(){coutenable_if_t()>test(){cout这在g

c++ - "peculiar"使用 switch 语句 : contains an if and for statement 的技术名称

声明一下,这是一道作业题。但这是一个无法从我们的讲义中找到答案的问题,我们被鼓励通过研究(我想是在互联网上)找到答案。我们得到了以下代码片段,并要求我们提供这种特殊“特殊”用法的switch语句的技术名称(这是在C++中)switch(x){case0:if(m>n){case1:for(o=0;o其中x、m、n、o和p是整数我已经回答了所有关于代码如何在不同条件下运行的问题,但我找不到这种switch语句的神秘技术名称。我已经尝试了一些创造性的谷歌搜索,并阅读了几页关于switch语句的内容,但找不到像这样的情况的提及,其中if和for嵌套在其中。谁能指出我正确的方向??

c++ - 使用 remove_if 按索引从 C++ vector 中删除

我们可以在C++中使用remove_if,根据对元素进行操作的谓词,在线性时间内从vector中删除元素。boolcondition(doubled){...}vectordata=...std::remove_if(data.begin(),data.end(),condition);如果我的条件不取决于值,而是取决于指数怎么办?换句话说,如果我想删除所有奇数索引元素,或一些任意索引集等?boolcondition(intindex){//returnswhetherthisindexshouldberemoved}vectordata=...std::remove_if(data.

在if语句中运行查询

我正在尝试学习C#,并遇到一个问题,我希望你们知道一个简单的解决方案。我想运行两个可能的LINQ查询,但要从不同的位置读取并根据IF条件返回两个不同的字段(两个ID)。在VB6中,这将是简单的类似:DimstrQueryasstringDimrsasadodb.recordsetIf1=1thenstrQuery="Selectmessageidasid1,refidasid1fromxwhere..."elsestrQuery="Selectcommonidasid1,nextidasid2fromxwhere..."endifsetrs=cn.execute(strquery)debug.

c++ - C++ 中的无分支 if 是什么样子的?

我意识到我在那个领域非常缺乏知识(说我不了解jack的奇特方式)。是否有关于如何以及何时使用它们的文档? 最佳答案 除了所有基于twiddling的无分支代码(不会涵盖所有内容,例如FP)之外,您还可以获得专门用于创建无分支代码的说明,这些说明是SETcc,FCMOVcc和x86下的CMOVcc,它们根据比较中的条件标志执行操作。一个非常简单的例子是(是的,这个例子很简单,一个人可能永远不会写这样的东西,它只是为了清楚地证明一个观点):boolCheckZero(intx){if(x==0)returntrue;returnfals