草庐IT

name-binding

全部标签

c++ - 将 boost::bind 与 boost::function 一起使用:检索绑定(bind)变量类型

有什么方法可以检索有关哪些参数受boost::bind限制的信息,还是需要手动存储?即:在.h中classMyClass{voidfoo(inta);voidfoo2(doubleb);voidbar();voidexecute();int_myint;double_mydouble;}在.cpp中MyClass::bar(){vectormyVector;myVector.push_back(boost::bind(&MyClass::foo,this,MyClass::_myint);myVector.push_back(boost::bind(&MyClass::foo2,thi

c++ - 在 OpenGL 对象包装器中自动绑定(bind)

我倾向于将OpenGL对象包装在它们自己的类中。在OpenGL中有绑定(bind)的概念,你绑定(bind)你的对象,用它做一些事情然后解除绑定(bind)。例如,一个纹理:glBindTexture(GL_TEXTURE_2D,TextureColorbufferName);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_BASE_LEVEL,0);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAX_LEVEL,1000);glBindTexture(GL_TEXTURE_2D,0);包装这将是这样的:textu

c++ - 在 C++11 中重新绑定(bind) lambda...这可能吗?

我有一个情况,我有一个lambda作为由某个函数调用创建的成员变量。问题是它将此作为其操作的一部分进行捕获。稍后,我希望能够复制整个对象...但是,在复制时我不知道lambda是如何创建的(它可能是通过不同的代码路径在多个位置定义的)。因此,对于在复制构造函数中放入什么,我有些不知所措。理想情况下,我想将lambda的捕获“重新绑定(bind)”到创建的新“this”。这有可能吗?下面是一些示例代码:#include#include#includeclassFoo{public:Foo()=default;~Foo()=default;voidset(conststd::string&

c++ - Bison and doesn't name 类型错误

我有以下文件:CP.h#ifndefCP_H_#defineCP_H_classCP{public:enumCardinalite{VIDE='\0',PTINT='?',AST='*',PLUS='+'};CP(CardinalitemyCard);virtual~CP();private:Cardinalitecard;};#endif/*CP_H_*/和dtd.y%{usingnamespacestd;#include#include#include#include"AnalyseurDTD/DtdDocument.h"#include"AnalyseurDTD/CP.h"voi

c++ - 'bind' 和 'function' 的问题

前一段时间,我遇到了如何将bind返回的可调用对象(称为A)传递给另一个函数(称为B)的问题,该函数需要一个参数,该参数是指向来自A的函数的指针。我发现bind返回的可调用A具有非常复杂的类型,因此放弃了我的方法。然后我在功能header中了解了“功能”,这听起来好像可以解决我的问题。然而,尝试了几次之后,我又一次受挫了!也许你能帮忙?下面是一些不起作用的代码:#include#include//Libraryfor"bind"and"function"#includeusingnamespacestd;usingnamespacestd::placeholders;//for_1,_

c++ - 可变长度数组 VLA(静态绑定(bind)或动态)

我已经很久没有在基本的编译器中使用基本数组进行编程了,但是最近我看到了这样的数组声明:inty;cin>>y;intz[y];过去的编译器常常给出错误“数组的存储大小不是常量”。然后我发现了C99中的可变大小数组。我想知道他们是如何在内部运作的。这会使数组动态化吗?这个内存是在堆上分配的吗?这种绑定(bind)是否仍然是静态完成的?如果是这样的话。 最佳答案 VariableLengthArray(VLA)是C99的一个特性,但包括gcc在内的几个编译器支持VLAasanextension在C99和gcc之外和clang在C++中支

C++ 函数名称分解 : What does this name suffix mean?

当我反汇编Chromium二进制文件时,我注意到有一些函数以这种模式命名:_ZN6webrtc15DecoderDatabase11DecoderInfoD2Ev.part.1如果我把这个字符串给c++filt,输出是webrtc::DecoderDatabase::DecoderInfo::~DecoderInfo()[克隆.part.1]那么这个.part.1后缀的真正含义是什么?如果它表明同一个函数有多个拷贝,他们为什么需要那个?是因为位置独立的要求吗?我使用g++作为编译器。 最佳答案 它表示析构函数是partialinli

c++ - 省略 std::bind 中的 std::placeholders

要创建std::function,我是这样做的:-std::functionf=std::bind(&B::fb,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3);voidB::fb(intx,intk,intj){}//example很明显B::fb接收三个参数。为了提高可读性和可维护性,我希望我可以这样调用它:-std::functionf=std::bind(&B::fb,this);//omit_1_2_3问题C++中是否有任何功能可以省略占位符?它应该自动按顺序调用_1、_2、...

c++ - 右值引用绑定(bind)到 std::function 类型的左值

为什么下面的代码在(@)处没有编译错误?我认为lamb是左值,因此它不会绑定(bind)到右值引用。usingFunctionType=std::function;usingIntType=int;structFoo{voidbar(FunctionType&&){}voidbaz(IntType&&){}};Foofoo;foo.bar([](){});//OKautolamb=[](){};foo.bar(lamb);//(@)Nocompilationerror?!foo.baz(5);//OKinti=5;foo.baz(i);//Error 最佳答

c++ - 为什么我不能构造一个绑定(bind)?

假设我想创建一些constexpr仿函数,虽然我可以使用bind来完成。有什么我想念的吗?为什么bind不能返回一个constexpr?给定:structfoo{intb()const{return_b;}inta()const{return_a;}intr()const{return_r;}constint_b;constint_a;constint_r;};我想:constexprautosumB=bind(plus(),placeholders::_1,bind(&foo::b,placeholders::_2));constexprautosumA=bind(plus(),pl