草庐IT

表达力

全部标签

c++ - 使用折叠表达式初始化静态 constexpr 类数据成员不编译

我对某段代码无法编译感到困惑,即使非常相似的代码段确实可以编译。这不会编译:#includetemplateclassFoo{staticconstexprstd::size_tBIT_COUNT=(GROUPS+...);usingBits=std::bitset;Bitsbits;};classBar:publicFoo{};具有启发性错误1>c:\...\source.cpp(5):errorC2059:syntaxerror:'...'。编译:#includetemplateclassFoo{usingBits=std::bitset;Bitsbits;};classBar:p

c++ - decltype-specifier 表示的类型是什么类型,其表达式是类类型的临时对象的成员?

假设我们有以下声明:structS{inta;};以下简单类型说明符表示的类型是什么?是int还是int&&?decltype(S{}.a)(这个问题旨在解决C++17,但也感谢解决其他版本标准的答案。) 最佳答案 它是int。每[dcl.type.simple]/4:Foranexpressione,thetypedenotedbydecltype(e)isdefinedasfollows:[...]otherwise,ifeisanunparenthesizedid-expressionoranunparenthesizedcl

c++ - 评估 C++ 字符串中的表达式 : "Hi ${user} from ${host}"

我正在寻找一种干净的C++方法来解析包含用${}包裹的表达式的字符串,并从以编程方式评估的表达式构建结果字符串。示例:如果我实现让“user”评估为“foo”的程序,“Hi${user}from${host}”将评估为“Hifoofrombar”等我正在考虑的当前方法包括一个状态机,该状态机一次从字符串中吃掉一个字符,并在到达“}”后计算表达式。有什么提示或其他建议吗?注意:boost::是最受欢迎的!:-)更新感谢前三个建议!不幸的是我让这个例子太简单了!我需要能够检查${}中的内容,所以这不是简单的搜索和替换。也许它会说${uppercase:foo}然后我必须使用“foo”作为H

c# - boost proto vs c# 表达式树

首先,我想知道这两个“功能”是否具有相同的目标。其次,如果是(或只是部分是),boostprotoover是否有任何重大限制?C#表达式树谢谢 最佳答案 我是Boost.Proto的作者,我最近才发现C#表达式树。AFAICT,它们在意图上相似,但在实现和范围上不同。C#具有将LINQ表达式捕获为动态类型树的语言支持。LINQ消费者使用它来优化查询的评估。针对内存中数据结构的查询将是通过LINQ扩展方法进行的直接评估,但针对远程数据库的查询将通过在运行时遍历LINQ表达式、计算T-SQL字符串并将其传递给用于远程执行的SQL服务器。

c++ - C++11 标准中的核心常量表达式是什么?

在C++11标准(N3690)的最新草案中,有11处引用了表达式核心常量表达式,但都没有定义这个实体是什么。还可以发现表达式coreconstantexpression定义得很好here,基本上与标准用于定义表达式conditional-expression的术语相同。因此,我想就这个问题征集一些意见,在我看来,这在标准中是错误的。现在,假设cppreference中的定义是正确的我还想知道为什么以下代码片段在Coliru中编译在Ideone,尽管提到的定义中有第(10)项?#includeintmain(){constdoublex=2.;constexprdoubley=x;std

java - 捕获 C++ lambda 表达式错误中的 JNIENV*

我的Main.cpp文件中有一个这样的JNI调用:JNIEXPORTjstringJNICALLJava_packagename_MainActivity_GenerateAlphabet(JNIEnv*env,jobjectthiz){generateAlphabet([](stringletters,stringnumbers){return(env)->NewStringUTF("test");});}但是这段代码给我错误:jni/Main.cpp:在lambda函数中:jni/Main.cpp:86:33:错误:未捕获“env”我真的需要在lambda函数中使用env,谁能帮帮

c++ - 检查表达式是否编译的可移植方法

我需要一种可移植的方式来定义一个模板类,该模板类检查其参数的某些表达式的有效性。理想情况下,它应该在MSVC2013+、Clang3.1+和GCC4.8+中以相同的方式工作。使用示例:structMyStruct{intBack(){return5;}};static_assert(HasBack::value,"Backmustexist!");我试过这段代码:templatestructHasBack:std::false_type{};templatestructHasBack().Back())>>:std::true_type{};它在clang中有效,但在VisualStu

c++ - 显式调用括号前的表达式必须具有(指向)函数类型

我正在vs2015社区学习C++模板。这是我的代码,我想定义一个模板类并调用main()函数中的成员函数。templateclassArithmetic{T_a;T_b;Arithmetic(){};publicArithmetic(Ta,Tb):_a(a),_b(b){};Tmaxconst(){return_a+_b;};Tminusconst(){return_a-_b;};};intmain(){Arithmeticar(5,6);cout当我构建这个程序时,我在最后一行遇到错误。它说:Expressionprecedingparenthesesofapparentcallmu

c++ - 是否可以定义稍后可以评估的 bool 表达式?

希望实现一种动态表达式,稍后我可以在调用时计算bool值。condition&&=condition2;//notevaluatedjustyetcondition||=condition3;if(condition)//evaluatednowdothis;elsedothis;例如,我在我的代码中使用相同的条件,如果我可以只调整一个语句或添加更多语句,即使在程序运行时也会更容易。conditions=(x>50&&y>200)&&(type==MONKEY);conditions&&=(x稍后在代码中if(conditions)cout编辑:应在if语句中评估条件。

c++ - 使用表达式模板的中间结果

C++模板元编程:来自Boost及其他的概念、工具和技术...Onedrawbackofexpressiontemplatesisthattheytendtoencouragewritinglarge,complicatedexpressions,becauseevaluationisonlydelayeduntiltheassignmentoperatorisinvoked.Ifaprogrammerwantstoreusesomeintermediateresultwithoutevaluatingitearly,shemaybeforcedtodeclareacomplicate