草庐IT

T_OLD_FUNCTION

全部标签

c++ - CPP : avoiding macro expansion of a macro function parameter

我想做的(为了记录目的)是这样的:编写这段代码是为了说明我的问题,实际代码很复杂,是的,即使在C++上我也有充分的理由使用宏=)#defineLIB_SOME1#defineLIB_OTHER2#defineWHERE"atfile#a,line#l,function#f:"//(lookforsyntaxhightlightingerroratSOxd)#defineLOG_ERROR_SIMPLE(ptr,lib,str)ptr->log("ERROR"str\"atlibrary"#lib);#defineLOG_ERROR(ptr,lib,str)LOG_ERROR_SIMPL

c++ - 错误 : use of deleted function ‘std::thread::thread(const std::thread&)'

下面的代码编译并按预期工作。结构(类)A派生自std::thread并扩展了一个int。main代码创建一些线程,然后等待它们完成。问题在于,虽然代码编译时没有结构A中的析构函数,但当析构函数未注释时(~A(){})我得到:error:useofdeletedfunction‘std::thread::thread(conststd::thread&)'我不知道为什么。此外,我不明白为什么代码既适用于push_back也适用于emplace_back而根据我的理解它不应该适用于push_back.#include#include#includestructA:std::thread{i

c++ - gcc 与 clang : inlining a function with -fPIC

考虑这段代码://foo.cxxintlast;intnext(){return++last;}intindex(intscale){returnnext()使用gcc7.2编译时:$g++-std=c++11-O3-fPIC这发出:next():movqlast@GOTPCREL(%rip),%rdxmovl(%rdx),%eaxaddl$1,%eaxmovl%eax,(%rdx)retindex(int):pushq%rbxmovl%edi,%ebxcallnext()@PLT##next()notinlined,callthroughPLTmovl%ebx,%ecxsall%cl

c++ - std::function 和 std::bind 做动态内存分配吗?

如果我这样做:-classThing{...voidfunction(conststd::string&message);};std::list>work;在“Thing”的一些成员中work.push_back(std::bind(&Thing::function,this,"Hello"));调用std::bind或使用std::function是否会导致使用new或其他方式进行任何动态内存分配?或者所有的存储空间都是在编译时分配的?如果标准没有说明任何内容,那么在visualstudio2012中呢,因为我的程序只需要在那里构建,为了提高效率,我可能需要在我考虑使用这种机制的地方

c++11:如何编写包装函数来生成 `std::function` 对象

我正在尝试编写包装器make_function,就像std::make_pair可以创建一个std::function从合适的可调用对象中提取对象。就像make_pair,对于函数指针foo,autof0=make_function(foo);创建一个std::function函数对象f0正确的类型签名。只是为了澄清,我不介意偶尔给make_function类型参数如果很难(或不可能)完全从参数中推断出类型。到目前为止,我的想法(下面的代码)适用于lambda、一些函数指针和仿函数(我没有考虑volatiles)。但我无法让它为std::bind工作或std::bind结果。在下面的代

c++ - xcode 7 如何抑制警告 "overrides a member function but is not marked ' override'”

我今天将xcode更新为7。更新后,我正在处理的项目出现警告“覆盖成员函数但未标记为‘覆盖’”。由于我们的项目将“踩踏警告为错误”设置为true。我遇到了很多错误。我仔细检查了“OtherLinkerFlags”并且非常确定“-Wsuggest-override”标志不包括在内。因为这是一个大项目,我更喜欢抑制警告,而不是在任何地方添加关键字“override”。关于禁用警告的任何建议?谢谢 最佳答案 您需要关闭-Winconsistent-missing-override标志,该标志会在最新版本的clang上自动添加-Wall。您

c++ - 错误 : no matching function for call to 'begin(int*&)' c++

#include#includeusingnamespacestd;voidprint(intia[]){int*p=begin(ia);while(p!=end(ia))coutP指向ia中第一个元素的指针。为什么它说“错误:没有匹配函数来调用'begin(int*&)'c++”谢谢!:) 最佳答案 因为在print()内部,变量ia是一个指针,而不是数组。在指针上调用begin()没有意义。 关于c++-错误:nomatchingfunctionforcallto'begin(int

c++ - 为什么 std::tr1::function 与 Objective-C block 一起工作?

当我发现下面的代码确实有效时,我感到非常惊讶:std::vectorlist/*=...*/;std::tr1::functionfunc=^(inti){returni+1;};std::for_each(list.begin(),list.end(),func);似乎std::tr1::function能够从Objective-Cblock构造,但我不太确定是如何实现的,因为(上次我检查过),它的实现没有'专门处理block。它是否以某种方式隐式吸出底层函数指针?另外,这种行为是否未定义并且可能会改变? 最佳答案 更新:我错了,

c++ - std::function 在 VS2012 中无法编译

我正在尝试编译以下取自here的代码但我收到编译错误。有没有人知道可能出了什么问题?代码#include#includestructFoo{Foo(intnum):num_(num){}voidprint_add(inti)const{std::coutf_add_display=&Foo::print_add;Foofoo(314159);f_add_display(foo,1);}编译错误:Error1errorC2664:'std::_Func_class::_Set':cannotconvertparameter1from'_Myimpl*'to'std::_Func_base

c++ - 使用 std::function 时如何解决此 <unresolved overloaded function type> 错误?

在以下(有效的)代码示例中,模板化的register_enum()函数用于迭代枚举并调用用户提供的回调以将枚举值转换为C字符串。所有枚举都在一个类中定义,枚举到字符串的转换是使用静态to_cstring(enum)函数完成的。当一个类(如下面的着色器类)有多个枚举和相应的重载to_cstring(enum)函数时,编译器无法决定将哪个是正确的to_cstring()函数传递给register_enum()。我认为代码比我能解释得更好...#include#include//ActualcodeusesLua,butforsimplification//I'llhideitinthise