草庐IT

表达力

全部标签

c++ - 如何围绕表达式模板编写第三方库包装类

我们正在尝试在我的研究小组中实现一个新的C++代码来执行大型数值模拟(有限元、有限差分法、拓扑优化等)。该软件将被学术界和工业界的人们使用。对于软件的密集线性代数部分,我们想使用Eigen或Armadillo。我们希望围绕这些包构建一个包装器,原因有二:1.向用户公开我们自己的API而不是第三方API;2.以防我们将来需要切换库。我知道原因2是一种非常昂贵的保险形式,但我们使用以前的模拟软件遇到过这种情况。我遇到的关于包装第三方库的信息来自这些来源:Shouldthird-partytypesbeexposedinmyC++library'sAPIhttps://softwareeng

c++ - GCC 内联汇编错误 : Cannot take the address of 'this' , 这是一个右值表达式

我仍在与GCC作斗争-编译以下内联汇编代码(使用-fasm-blocks,启用Intel风格汇编syntax)给我一个奇怪的错误Cannottaketheaddressof'this',whichisanrvalueexpression...MyClass::MyFunction(){_asm{//...movebx,this//error:Cannottaketheaddressof'this',whichisanrvalueexpression//...moveax,this//error:Cannottaketheaddressof'this',whichisanrvalueex

c++ - 返回类型很长的表达式

我有以下功能:inlineautoiterateSomething(obj&o){autoiterators=baseIterator(o);autotranformer=boost::bind(transofrmToSomething,_1,o);typedefboost::transform_iteratoriterator_t;iterator_tbegin(iterators.first,tranformer);iterator_tend(iterators.second,tranformer);returnstd::make_pair(begin,end);}如您所见,我不知

c++ - C++ 条件语句是否带有从条件表达式到语句的依赖关系?

我是专门从内存模型的角度来问的。http://en.cppreference.com/w/cpp/atomic/memory_order我问是因为我想知道我是否可以在下面使用std::memory_order_consume:mLocalMemPtr1和2以及mAtomicMemPtr是指向共享缓冲区的指针。在我正在做的生产者线程中:for(intx=0;x在消费者中:tempMemPtr=mAtomicMemPtr.load(std::memory_order_consume);while(tempMemPtr!=mLocalMemPtr2){++mLocalMemPtr2;intt

c++ - 一个只接受编译时已知表达式的函数?

编译时表达式很好,因为您可以使用它们来专门化模板。因此,例如,可以通过使用编译时表达式和std::get方法来访问元组。std::cout(my_tuple)现在,上面的表达式很难看。我正在尝试自己开发某种元组(希望能够将它们变成编译时字典),因此,比如说,它们以以下形式公开一种方法:my_dict.get();现在,我想做的是将其替换为[]运算符。我想知道这是否可能。首先,我不知道如何只选择常量、编译时已知的表达式作为我的运算符的参数。此外,返回类型将取决于常量表达式的值。然而,有了定义,我可以用类似的东西更接近我想要的东西#defineitem(x)get()这样我就可以使用my_

c++ - 如何计算 MathML 表达式?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion给定一些MathML内容:cab和std::mapcal;cal["a"]=1.;cal["b"]=2.;cal["c"]=0;//doesnotmatterwhatcis我想评估MathML并检索结果。有什么办法吗?

匹配或什么都没有的正则表达

我试图在两个HTML标签之间找到一个值,即:可以有一个字符\w或什么都没有(甚至没有>关闭开头支架。所以我正在尝试这个/[\w{1,}|]/但是它不起作用。这是针对PHP的,是的,我很清楚有些人警告不要以正则表达方式解析HTML;)...任何帮助,将不胜感激。谢谢看答案/\w*/如果您想拥有匹配组,则需要括号内而不是括号:/(\w*)/要匹配“无”*

c++ - 转换表达式模板树

给定一个表达式模板树,我想在处理它之前创建一个新的优化树。考虑以下乘法运算示例:a*b*c*d,由于operator*的从左到右的结合性,它产生了表达式树:(((a*b)*c)*d).我想生成一个转换后的表达式树,其中乘法从右到左发生:(a*(b*(c*d))).考虑二进制表达式类型:templatestructBinaryTimesExpr{BinaryTimesExpr()=default;BinaryTimesExpr(constBinaryTimesExpr&)=default;BinaryTimesExpr(BinaryTimesExpr&&)=default;BinaryT

c++ - Lambda 表达式作为 C++14 中的类模板参数

问题Lambdaexpressionsasclasstemplateparameters询问使用lambda表达式作为类模板参数的可能性。问题的答案是否定的。然而,它是关于C++11的。新标准C++14中的情况是否发生了变化? 最佳答案 不,C++14中的情况根本没有改变,事实上5.1.2Lambda表达式段落2已收紧:Alambda-expressionshallnotappearinanunevaluatedoperand(Clause5).到:[...]Alambda-expressionshallnotappearinanu

c++ - 使用枚举作为常量表达式。哪个编译器是正确的?

以下代码使用枚举成员m作为常量表达式,即作为模板参数。代码在gcc下编译但不在clang(livedemo)下编译。Clang说“错误:非类型模板参数不是常量表达式”。问题可以通过交换线路//1来解决通过A::m>a.因此,我的问题不是如何解决这个问题,而是哪个编译器是正确的。templatestructA{};templatestructtst{enum:size_t{m=n%15};templatevoidcall(tstconst&t2){Aa;//1}}; 最佳答案 根据标准,Clang拒绝代码是正确的。t2.m是类成员访问