草庐IT

MYLIB_FUNCTION_ATTRIBUTE

全部标签

c++ - Clang 与 GCC : Friend-ing a global function via qualified/unqualified names

我正在尝试确定是否针对Clang、GCC或两者提交错误报告(我已经针对Clang主干和GCC4.7.2进行了测试:如果有人可以针对GCC主干验证这一点会有所帮助):基本上,在默认和C++11模式下,使用-fsyntax-only可以很好地编译以下代码三行文件:classA{friendvoidf();};请注意,没有事先声明f(),但这显然没问题。但是,Clang(但不是GCC)拒绝以下内容:classA{friendvoid::f();};来自Clang的错误是“在指定范围内找不到类型为'void()'的名为'f'的函数”,但我在标准中找不到任何理由来区别对待这种情况,所以我认为这是

c++ - 为什么 GCC 的 std::function 不使用对按值传递的参数的右值引用在其内部委托(delegate)之间传递它们?

首先,考虑以下代码:#include#includestructNoisy{Noisy(){std::coutf=foo;f(n);}及其在不同编译器中的输出:VisualC++(seelive)Noisy()Noisy(constNoisy&)Noisy(Noisy&&)foo(Noisy)~Noisy()~Noisy()~Noisy()Clang(libc++)(seelive)Noisy()Noisy(constNoisy&)Noisy(Noisy&&)foo(Noisy)~Noisy()~Noisy()~Noisy()GCC4.9.0(seelive)Noisy()Noisy(

c++0x : resolving ambiguity between function-definition followed by empty-declaration and simple-declaration

我在思考c++0x规范中明显的歧义时遇到了问题,另请参阅:http://www.nongnu.org/hcb/假设我们有代码voidfoo(){};我个人将代码解释为function-definition后跟empty-declaration。但是,看看语法规范,我想说这可以很容易地解释为simple-declaration,它是block-declaration的一部分,因此被提及declaration列表中的较早...这是我对如何将其解析为简单声明的解释:voidfoo(){};"->简单声明void->decl-specifier-seq->decl-specifier->typ

c++ - 为什么 std::function 不是有效的模板参数,而函数指针是?

我已经定义了名为CallBackAtInit的类模板,其唯一目的是在其初始化时调用一个函数(构造函数)。该函数在模板参数中指定。问题是模板不接受std::function作为参数;但他们接受函数指针。为什么?这是我的代码:#include#include/*Doesnotwork:*/templatecall_back>/*Workfine:*///templateclassCallBackAtInit{public:CallBackAtInit(arg_typearg){call_back(arg);};};voidprintInt(inti);classHoldInt:privat

c++ - 存储在 std::function 中时,无捕获 lambda 无法转换为函数指针

通常,没有捕获的C++lambdashouldbeconvertable到c风格的函数指针。不知何故,使用std::function::target转换它不起作用(即返回一个nullptr),而且target_type与签名类型不匹配,即使它看起来一样。在VC13和GCC5.3/5.2.0/4.8上测试最小测试示例:#include#includevoidMaybe(){}voidcallMe(std::functioncallback){typedefvoid(*ftype)();std::cout()预期的输出是11实际输出001问题是:为什么lambda的签名与传递的函数不同?

c++ - 编译器错误 : Function call with parameters that may be unsafe

得到了一些不是我的代码并且它产生了这个警告atm:iehtmlwin.cpp(264):warningC4996:'std::basic_string::copy':Functioncallwithparametersthatmaybeunsafe-thiscallreliesonthecallertocheckthatthepassedvaluesarecorrect.Todisablethiswarning,use-D_SCL_SECURE_NO_WARNINGS.SeedocumentationonhowtouseVisualC++'CheckedIterators'with[_

c++ - 替代 std::function 将函数作为参数传递(回调等)

我在使用C++11进行实验时偶然发现了这一点。我发现这是一个明显的解决方案,但我无法在野外找到任何其他示例,所以我担心我遗漏了一些东西。我指的做法(在“addAsync”函数中):#include#include#include#includeintaddTwoNumbers(inta,intb){std::coutfuture){std::cout)->void){//number){//lambdafunctionsworkgreataddAsync(number.get(),20,[](std::futurenumber){addAsync(893,4387,printNum);

c++ - 使用 std::function 中函数的类型来声明该类型的多个函数

假设我有typedefstd::functionFooType;我想为一系列函数声明函数原型(prototype),我可以将它们插入到这种类型的std::function中。我知道我会写doublefoo1(int,long);doublefoo2(int,long);等等,但是有没有办法在声明函数原型(prototype)时以某种方式使用FooType?类似的东西FooType::typefoo1,foo2;也许我可能不得不使用(*foo1)或类似的?自然,在函数的实现中,我需要把它拼写出来,这样我就可以输入一些参数,但是像上面这样写可以让我的头文件更干净。

c++ - "cannot be used as a function error"

我正在编写一个使用不同.cpp文件中的函数的简单程序。我所有的原型(prototype)都包含在一个头文件中。我将一些函数传递给其他函数,但不确定我是否正确执行。我得到的错误是“'functionname'不能用作函数”。它说不能使用的函数是growthRate函数和estimatedPopulation函数。数据通过输入函数输入(我认为这是有效的)。谢谢!头文件:#ifndefheader_h#defineheader_h#include#include#includeusingnamespacestd;//prototypesvoidexterninput(int&,float&,

c++ - 类声明的编译错误 "looks like a function definition"是什么意思?

我最近遇到了这个问题。我发现很多人都在问这个问题——here,forexample——但没有具体的答案。这是从该链接中提取的示例代码:classAFX_BASE_APPLICATION_APP_CLASSCFileExtension{public:CFileExtension();virtual~CFileExtension();};这产生的错误是:c:\FileExtension.h(14):errorC2470:'CFileExtension':看起来像函数定义,但没有形参列表;跳过明显的body 最佳答案 您几乎肯定错过了定义