草庐IT

function-call-operator

全部标签

c++ - 转发声明使用 enable_if : ambiguous call 的函数

我在声明一个使用boost::enable_if的函数时遇到了一些麻烦:下面的一段代码给我一个编译器错误://Declarationtemplatevoidfoo(Tt);//Definitiontemplatetypenameboost::enable_if>::typefoo(Tt){}intmain(){foo(12);return0;}编译时,出现“对foo的模糊调用”错误。根据enable_if的定义,'type'typedef在条件为真时对应于void,据我所知,的两个签名foo匹配。为什么编译器认为它们不同,是否有正确的方法来转发声明foo(最好不要重复enable_if

c++ - 将 lambda 转换为 std::tr1::function

使用带有tr1服务包和IntelC++编译器11.1.071[IA-32]的visualstudio2008,这与我的其他相关question我正在尝试为c++编写一个功能映射,它的工作方式有点像ruby​​版本strings=[2,4].map{|e|e.to_s}所以我在VlcFunctional命名空间中定义了以下函数templatevectormap(constContainer&container,std::tr1::functionf){vectortransformedValues(container.size());intindex=-1;BOOST_FOREACH(c

c++ - stringstream::operator>> 只读取,不从流中提取下一个标记

我怎样才能只读取第一个新的“token”(标准的非空白字符序列,由运算符精美地提取>>)而不将其从流中删除?我可以提取字符串,检查它是否需要放回去,并重置内部流迭代器吗?我认为这可能有效,但不知道如何实现...例子:#includeusingstd::string;#includeusingstd::stringstream;intmain(){strings("teststring\\blablie");stringstreamss(s);stringtoken;while(ss>>token){if("\\"==token)break;elsecouttellg和seekg在流提取

c++ - const 重载的 operator[] 函数及其调用

我在类array中定义了两个版本的重载operator[]函数。ptr是指向array对象第一个元素的指针。int&array::operator[](intsub){returnptr[sub];}和intarray::operator[](intsub)const{returnptr[sub];}现在,如果我定义一个const对象integer1只能调用第二个函数......但是如果我创建一个非const对象然后调用如下:cout这里调用了哪个函数? 最佳答案 在您的第二个示例中,将调用非常量版本,因为不需要转换,不需要转换的调

c++ - 我怎样才能让 boost::function 不那么宽松?

typedefboost::functionMyCallback;voidRegisterCallback(MyCallbackcallback);classA{public:voidGoodCallback(intintArg,boolboolArg){printf("callingGoodCallback(%d,%s)\n",intArg,boolArg?"true":"false");}voidBadCallback(intintArg){printf("callingBadCallback(%d)\n",intArg);}};intTestFunction(){A*myA=ne

c++ - 如何使用类中定义的 "operator X()"?

我是C++的新手,这个声明让我感到困惑:服务.h:classServiceHandle{public:ServiceHandle(SC_HANDLEh):handle(h){}...operatorSC_HANDLE()const{returnhandle;}protected:SC_HANDLEhandle;};我已经通过此处列出的构造函数之外的其他方式创建了一个ServiceHandle对象。我想让实际的SC_HANDLE传递给ChangeServiceConfig,我该如何得到它?我假设它与运算符(operator)有关,但我不知道如何使用它。 最佳答

c++ - operator== 是成员函数还是友元函数,?

做operator==有好处还是必须做,operator,operator>,operator,operator>>,!=,>=,...作为friend而不是类的方法?我还没有找到一篇很好的文字来解释为什么只交friend......我有一个很好的用例如果C1x;C2y;C3z;我有C3&operator+(C1&,C2&)作为C1和C2的friend,即当类(class)不同时,但问题是为什么是同一个类(class)。 最佳答案 独立函数的论据是这些运算符根据操作数类型应该是对称的。当您的类具有允许将左侧操作数隐式转换为您的类类型

c++ - 为什么我得到 "recursive type or function dependency context too complex"?

为什么此代码在VisualC++中会产生以下错误?是编译器的错误还是代码无效?templateinttest(int=sizeof(test()));templateinttest(int);intmain(){returnsizeof(test());}Recursivetypeorfunctiondependencycontexttoocomplex 最佳答案 test在您使用它时尚未声明。C++11中经常出现类似的问题:templateautotest()->decltype(test());templateautotest(

c++ - 如何从 operator new 或 malloc 为 mremap 获取页对齐内存

有没有办法分配一block内存,使其起始地址与给定的页面大小对齐?请注意,我不想在分配block后计算对齐地址。原因是在某些时候我将不得不在block上调用mremap():mremap要求旧地址参数是页面对齐的。 最佳答案 mremap只能安全地用于由mmap分配的内存区域,这些内存区域本质上是页面对齐的。在其他任何事情上使用它都是危险的(正式的,未定义的行为)并且可能看起来有效但可能会以您不会立即看到的方式严重破坏事物。 关于c++-如何从operatornew或malloc为mre

BFM(Bus Functional Model )--总线功能模型

BFM的作用是将低层总线的时序封装起来,对高层提供一个调用接口,使得高层不用关心低层的实现细节,专注于testcase的设计。这一点类似C++中面向对象的概念,在C++里,对象相当于命令或调用,而对象的成员函数实现具体的功能,外部无须关心类内部的细节。BFM就是针对特定设计单元的总线接口模型,例如微处理器的总线接口模型。它不包括RTL或门级单元内部的细节。BFM的目的是为了使验证代码的仿真速度更快,行为建模更容易,并且模型更易使用。验证就是送激励给DUV(designunderverification),然后对DUV输出的信号(或内部信号)进行分析。即“激励产生”  ->   “送激励” ->