草庐IT

MYLIB_FUNCTION_ATTRIBUTE

全部标签

c++ - std::async 可以调用 std::function 对象吗?

是否可以使用std::async调用通过std::bind创建的函数对象。以下代码编译失败:#include#include#includeusingnamespacestd;classAdder{public:intadd(intx,inty){returnx+y;}};intmain(intargc,constchar*argv[]){Addera;functionsumFunc=bind(&Adder::add,&a,1,2);autofuture=async(launch::async,sumFunc);//ERRORHEREcout错误是:没有匹配函数来调用“async”:候

c++ - "__comp cannot be used as a function"c++ 尝试 next_permutation

我正在尝试使用STL中的next_permutation进行排列,但是我遇到了一个错误,我不知道如何修复它。我试过谷歌搜索,但唯一出现的结果是人们使用相同的函数和函数的变量名称,但这里不是这种情况。这是错误:'__comp'cannotbeusedasafunction代码如下:structrectangle{intn;inth;intw;};boolcheck(constrectangle&rect1,constrectangle&rect2){returnrect1.n这是完整的源代码以及示例输入,以备不时之需http://pastebin.com/eNRNCuTf

c++0x std::function 作为方法参数

我正在尝试传递std::function通过这样的方法:classdispatch{public:deliver(std::functiontask);};这按预期工作。但是我希望将参数传递给作为任务提供的一些方法,但不想为所有不同的function创建重载。表格。例如是否有可能只创建如下的方法deliver(std::function&task);然后调用dispatch->deliver(bind(&Object::method,X));或dispatch->deliver(bind(&Object::method,X,arg1,arg2));等...感谢大家的意见。看来我真正的错

c++ - 在 C++11 中使用 std::function 作为委托(delegate)

假设我有这3个不同的函数,我可能想指出:floattest1(inta,intb){return7.0f;}structTestClass{floattest2(inta,intb){return5.0f;}};structTestClass2{floattest3(inta,intb){return3.0f;}};注意这三个函数如何使用相同的参数和返回值。我想抽象掉它是否是一个成员函数以及它属于哪个类。我想要一个委托(delegate)类型,它可以引用这3个函数中的任何一个,具体取决于它的初始化方式。这是我的第一次尝试:typedefstd::functionMyDelegate;/

c++ - 设置一个 std::function 变量来引用 std::sin 函数

我有一个关于如何正确使用新的C++11std::function变量的问题。我在网上搜索过几个例子,但它们似乎没有涵盖我正在考虑的用例。以这个最小的例子为例,其中函数fdiff是numerical.hxx中定义的有限前向差分算法的实现(这不是问题,我只是想给出我想要采用任意函数并将其传递的上下文原因)。#include#include#include#include"numerical.hxx"intmain(){doublestart=0.785398163;doublestep=0.1;intorder=2;std::functionf_sin=std::sin;std::cout

c++ - 成员初始化列表 : initialize two members from a function returning a tuple

memberinitializerlist中的多个成员是否可以从函数获得的元组中初始化?随着通过元组返回多个值变得越来越流行,我希望有一个解决方案。除了语言限制,我看不出有什么其他原因无法做到这一点。这是我所拥有的mcve:autonew_foo(std::size_tsize)->std::tuple,int*>{autobuffer=std::make_unique(size*sizeof(int)+8);autobegin=static_cast(static_cast(buffer.get()+4));returnstd::make_tuple(std::move(buffer

C++ 语法/语义问题 : Reference to Function and typedef keyword

什么会typedefint(&rifii)(int,int)用于?这个“声明”之前的typedef是什么?我想把这看作typedef(int(&rifii)(int,int))[newname]但是[新名称]不像你那样存在typedefintINTEGER;以下语法的类似问题:typedefvoid(*PF)();PFedit_ops[]={&cut,&paste,©,&search};PFfile_ops[]={&open,&append,&close,&write};PF*button2=edit_ops;PF*button3=file_ops;button2[2]();t

c++ - std::function 创建临时文件时内存访问错误

我目前正在实现一些抽象来表示3D对象的水平集操作。基本上是在this中描述的内容GLSL着色器的精彩页面。为了简要概述,3D对象可以用一个函数来描述,该函数将R^3域映射到称为水平集(或符号距离函数)的标量。例如,对于球体,水平集函数由phi(X)=X.Norm2()-R*R定义,其中Norm2表示平方欧氏范数R^3中的一个vector。所以我想出了一个代表这样一个概念的LevelSetObject类:classLevelSetObject{usingSDFFunction=std::function;protected:SDFFunctionm_SDF;public:doubleSD

c++ - 包括 boost function.hpp,但不使用它,会使我的二进制文件的大小增加 200k。为什么?

我正在研究嵌入式处理器,因此二进制大小非常重要。我试图避免使用标准库。但是,我想使用std::function。我从boost中提取了“function.hpp”,我正在尝试使用它,但是简单地包含function.hpp会增加我的二进制200k的大小,这使得它比我的处理器可以接受的更大。如果我包含标准库,它只会增加我的二进制文件60k。我想不通,如果我还没有使用任何模板,就不会有任何开销。即使我这样做了,我也无法想象它是值(value)200k的代码。我使用的是gcc4.7,我已经禁用了我可以告诉“-g0”的调试信息并打开了优化“-O2”。任何帮助将不胜感激。

c++ - 是什么阻止了 __attribute__((packed)) 进入 ISO C/C++?

这是我在编写某些类的系统软件时使用C/C++的最重要原因之一,但它只不过是一个编译器扩展,恰好很常见。为什么委员会不考虑正式支持它?它是否与现有规范中的任何条款不兼容,例如Doespublicandprivatehaveanyinfluenceonthememorylayoutofanobject? 最佳答案 Whyisn'tthecommitteeconsideringtosupportitofficially?因为没有人提出。最接近这种提议的是N3986(PDF),它只适用于位域。commentsfromthediscussio