草庐IT

MYLIB_FUNCTION_ATTRIBUTE

全部标签

c++ - "error: no matching function for call to"构造未初始化的结构时

我正在尝试使用boost::lockfree::spsc_queue有了这个websocketserver而不是std::queue用于m_actions以包含此struct:enumaction_type{SUBSCRIBE,UNSUBSCRIBE,MESSAGE};structaction{action(action_typet,connection_hdlh):type(t),hdl(h){}action(action_typet,server::message_ptrm):type(t),msg(m){}action_typetype;websocketpp::connecti

c++ - Mingw 'std::function' 还没有声明?

首先,我在带有最新mingw版本的Windows上使用代码块。我正在使用sfml库开始游戏,但不幸的是我遇到了这个问题。我需要为我的状态管理器使用std::function,但它一直显示相同的错误:'std::function'尚未声明。我做了#include并使用了链接器选项-std=c++0x,但仍然没有成功。唯一不能编译的是这个头文件:#ifndefSTATEMANAGER_HPP_INCLUDED#defineSTATEMANAGER_HPP_INCLUDED#include#include"State.hpp"#include#includeclassStateManager

c++ - std::is_convertible 与 std::function 不一致

当涉及std::function对象和std::bind时,我注意到std::is_convertible和std::is_assignable有一些奇怪的结果。我假设当这些函数返回true时,可以进行转换。还是我遗漏了什么?以下代码在不同的编译器上打印不同的结果,我希望它打印0,因为这些类型无法分配。#include#include#includeintmain(){std::cout,std::function>::value它在以下编译器上打印0:gcc4.8和gcc4.9clang3.4(但不是来自ubuntu12.04的那个)它在以下编译器上打印1:海湾合作委员会4.7VC+

c++ - 构造函数执行顺序/顺序 : dependent initialization of static variable (class instance) in a function

对于以下代码段:classBar{public:intx;inty;Bar(int_x,int_y){/*somecodeshere*/...}};classFoo{public:intx;inty;intz;Foo(Barb):x(b.x),y(b.y){z=someFunction(x,y);}};voidf(intx,inty){Barb(x,y);staticFoox(b);}intmain(){f(2,3);}在我看来,函数内的静态变量甚至应该在main()之前初始化。但是,Foo类型的静态变量x依赖于Bar类型的局部变量b。问题是:1)x的构造函数什么时候执行?即x是在第一

c++ - 可变参数模板、类型推导和 std::function

我正在尝试制作一个模板函数,可以将具有任何类型和数量的参数的其他函数传递给它,并将其绑定(bind)到std::function.我设法做到了这一点:#include#includeintfoo(intbar){std::coutstd::functionfunc(std::functionf){returnf;}intmain(){//autobarp=func(foo);//compilationerrorautobar=func(std::function(foo));bar(0);//prints0}我只想调用autobarp=func(foo);并推导出类型,但是这一行给出了

c++ - 从基类继承两次时如何修复 "error: no matching function for call to"

我目前正在尝试在我的项目中实现一系列继承类。因此,我使用成员初始值设定项列表并将对变量的引用“管道化”到基类。我真的不确定,为什么我会收到编译器错误。我已经尝试将引用“int&id”更改为指针“int*id”。上面的示例只是指出我的问题的最小示例:classBase{public:int&m_id;Base(int&id):m_id(id){}};classDerived1:virtualpublicBase{public:Derived1(int&id):Base(id){};};classDerived2:publicDerived1{public:Derived2(int&id)

C++11 : How can I define a function that accept a universal reference of a specific type of object?

问题:我正在用C++11开发一个程序。我想编写一个接受右值引用和左值引用的函数。(即通用引用)。以下函数接受通用引用参数:templatevoidfunction(T&&t){/*SNIP*/}但是,它接受所有类型的参数。它破坏了函数的类型安全。想让它接受特定类型的参数怎么办?这是我能想到的解决方案:voidfunction(Class&t){/*SNIP*/}voidfunction(Class&&t){function(t);}然而,它很丑陋。如果我想更改要接受的参数或更改函数名称,我必须更新函数的两个版本。有比这更好的等价物吗?编辑:问题已解决。你们都回答得很好。我对两个答案都投

c++ - 使用 lambda 作为参数:std::function 还是模板?

我正在学习c++11,对lambda特别感兴趣。经过一些实践,我假设lambda闭包是一个无名函数对象。所以我写了这段代码。templatevoidlambda_caller(callable_objectlambda){std::cout我知道我可以使用std::function而不是使用模板,但我不想在类型转换时产生开销。但是我在阅读这个问题时发现了一个问题:Whycan'tIcreateavectoroflambdainC++11?回答者说,“每个lambda都有不同的类型-即使它们具有相同的签名。”。编译器为不同的类生成不同的代码。因此,我认为每当我对要传递的lambda进行另

c++ - 使用 lambda 初始化包含 std::function 的类

我创建了一个包含std::function作为成员的模板类,方法如下:templateclassFoo{private:std::function_func;public:Foo(conststd::function&func):_func(func){}};为了不必指定传递函数的参数和返回类型,我创建了一些make_foo重载:templateautomake_foo(Ret(&func)(Args...))->Foo{return{std::function(func)};}templateautomake_foo(conststd::function&func)->Foo{ret

c++ - 为什么我收到 clang 警告 : no previous prototype for function 'diff'

我的代码中有以下声明://Centraldifffunction,makestwofunctioncalls,O(h^2)REALdiff(constREALh,constREALx,REAL(*func)(constREAL)){//diff=f(x+h)-f(x-h)/2h+O(h^2)return((*func)(x+h)-(*func)(x-h))/(2.0*h+REALSMALL);}这在“utils.h”文件中。当我使用它编译测试时,它会给我:clang++-Weverythingtests/utils.cpp-otests/utils.oInfileincludedfro