草庐IT

expression-templates

全部标签

c++ - 有没有办法绕过 "This expression has side effects and will not be evaluated."?

在VisualStudio2017中,我创建了一个调用C++函数的.natvis调试器可视化规则。在调试器中显示:这个表达式有副作用,不会被计算。除此之外,它还显示了一个蓝色的小箭头,可以单击该箭头以强制其求值,然后它实际上会调用该函数。(我认为这可能是最近的一个功能,因为我似乎记得在VS2013中尝试过这个并且不记得它有绕过)我的问题是:有没有什么方法可以永久绕过这个安全检查,让它总是立即评估我的功能,而不需要我点击箭头?我看过一个非常相似的问题:"Thisexpressioncausessideeffectsandwillnotbeevaluated".Howtosuppress?

C++ template-id 不匹配任何模板?

我用模板和特化写了一个简单的代码:#includetemplateintHelloFunction(constT&a){std::coutintHelloFunction(constchar*&a){std::cout我认为char*特化是正确的,但是g++报告:D:\work\test\HelloCpp\main.cpp:11:5:error:template-id'HelloFunction'for'intHelloFunction(constchar*&)'doesnotmatchanytemplatedeclaration请帮我找出错误。 最佳答案

c++ - 错误 : C2988: unrecognizable template declaration/definition

我的两个模板的标题中出现错误。两者都有类似的声明和定义如下:templatevoidsetVideoCodecOption(T1AVCodecContext::*option,T2(CR2CVideoCodecSettings::*f)()const);templatevoidEncoderPrivate::setVideoCodecOption(T1AVCodecContext::*option,(CR2CVideoCodecSettings::*f)()const){T2value=(m_videoSettings.*f)();if(value!=-1){m_videoCodecC

c++ - 模板特化站点报告 "too few template-parameter-lists"错误

代码某处有错误,但我不知道如何解决。它说“模板参数列表太少”。我不明白哪个是错误的。代码如下:#if!defined(VECTOR_H_INCLUDED)#defineVECTOR_H_INCLUDED#include//forsize_tnamespaceVec{classVector_base{public:explicitVector_base(){}};templateclassVector:publicVector_base{typedefVectorME;explicitVector(T,T,T);doubledot(constME&v)const;T&operator[]

C++1y/14 : auto variable templates?

下面的C++1y/C++14程序格式错误吗?templateconstexprautoX=42;intmain(){static_assert(X==42,"");}为什么/为什么不?Clangtrunk提示说:error:invalidoperandstobinaryexpression('auto'and'int') 最佳答案 这是clang中的一个错误,现在已修复:http://llvm.org/bugs/show_bug.cgi?id=19152 关于C++1y/14:autov

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++ - std::map 和 -fno-implicit-templates

我正在尝试使用g++4.4进行编译并链接一个使用STL的简单程序。我正在尝试使用-fno-implicit-templates来做到这一点,因此必须显式实例化所有模板。我不明白为什么此代码有效:#include//templateclassstd::map;templateclassstd::_Rb_tree,std::_Select1st>,std::less,std::allocator>>;intmain(){std::maptable;return0;}我希望这个程序需要这一行:templateclassstd::map;,但是该行不会使程序链接。std::_Rb_treeli

c++ - 错误 : expected primary-expression before X token

您能解释一下标题错误通常是什么意思吗?我有时会得到它,并且我总是最终会偶然修复它,但我仍然不知道它是什么意思。这是我当前错误的示例:Lcalca(graphList[0],dset,ss&);error:expectedprimary-expressionbefore')'token 最佳答案 如果没有任何示例很难判断,但IIRC发生这种情况是由于使用了undefinedsymbol(例如,没有声明的函数或类型——不确定到底是哪个)。因此,解析器会感到困惑,不知道代码中的进一步内容。-(我相信这个错误只会与其他错误一起出现?或者你能

c++ - 没有可用于新 C++ 项目的 MFC 模板 - Visual C++ Express

我在发布这篇文章之前一直在谷歌上搜索,但我没能找到关于这个主题的任何内容..但我认为这不是一个非常棘手的问题所以请原谅发布:o)。为了一份新工作,我正在学习C++,并遵循一些教程。特别是一个关于MFC的,它展示了如何创建项目、选择MFC应用程序等。所以,我在vista和Win7上都安装了VisualC++Express2010,两次我都遇到了同样的问题:当我进入新项目时,我没有“MFC”菜单。该教程中的一些屏幕截图以及VisualC++2010上的其他一些屏幕截图清楚地表明它可以存在。更具体地说,在左角我有“已安装的模板”,然后是“VisualC++”和“CLR”、Win32”和“常规

c++ - Visual C++ Express 2010 突然不接受#includes

我正在使用一个API,该API已#define编辑了所有包含文件。我正在使用VisualC++2010Express进行开发,到目前为止它一直运行良好。我正在向项目添加一个新的cpp文件,不小心添加了一个“Windows窗体”。VC警告我,我的项目目前没有使用CLR,我真的想要吗?我单击否,并按预期添加了文件。然而,在那之后,我的项目不再编译。代码基本上是这样的:api_header.h:#defineDEFINED_HEADER_NAME"path/to/header/file.h"stdhpf.h:#includeDEFINED_HEADER_NAME正如我所说,很长一段时间都运行