草庐IT

PRETTY_FUNCTION

全部标签

c++ - 如何制作 std::function 实例

在C++0x中,我们像下面这样使用std::function:intnormal_function(){return42;}std::functionf=normal_function;所以要获得一个std::function实例,我们必须首先定义它的类型。但这很无聊,有时也很难。那么,我们是否可以像std::tuple一样使用make来获取std::function实例?事实上,我只是用谷歌搜索了一下,C++0x并没有提供这样的make工具。为什么C++0x不提供make工具?我们可以实现吗? 最佳答案 是的,我们可以实现它tem

c++ - 如何将成员函数指针传递给 std::function

如何通过函数将成员函数指针传递给std::function。我将通过比较来解释它(LiveTest):templatevoideasy_bind(std::functionf,Args&&...args){}intmain(){fx::easy_bind(&Class::test_function,newClass);return0;}我收到一条错误消息:nomatchingfunctionforcallto‘easy_bind(void(Class::*)(int,float,std::string),Class*)’我只是不明白为什么函数指针在通过函数参数传递时不能传递给std::

C++ - 为什么 std::function<some_type_t, void> 无效?

在C++中,如果我尝试这样做:std::function然后编译器会抛出错误。为什么是这样?它在许多情况下很有用。一个例子://g++-std=c++17prblm.cpp#include#includetemplateclasssome_callback{public:usingcallback_t=std::function;some_callback(callback_t_myfunc){this->myfunc=_myfunc;}callback_tmyfunc;};usingcallback_with_just_bool=some_callback;usingcallback

c++ - 从 type_id_with_cv<>()::pretty_name() 移除命名空间

我正在使用以下代码来检索类的名称:templatestringGetName(constT&object){usingtype=typenameremove_const::type>::type;returnboost::typeindex::type_id_with_cvr().pretty_name();}代码运行良好。但是,返回的字符串还包含namespace。有没有只返回类名的boost函数?我知道我可以自己写,重点是不要重新发明轮子。 最佳答案 这是轮子的另一项发明和可怕但快速的解决方案,基本上,利用命名空间结构和目录结构

c++ - 为什么在使用 GCC 7、libstdc++ 和 -fgnu-tm 编译时,std::is_function 无法识别 transaction_safe 函数?

下面的编译失败是由于libstdc++缺陷造成的,还是此行为符合事务内存TS(n4514)?#includestatic_assert(std::is_function_v,"");intmain(){} 最佳答案 它应该可以工作,请提交一份GCC错误报告。 关于c++-为什么在使用GCC7、libstdc++和-fgnu-tm编译时,std::is_function无法识别transaction_safe函数?,我们在StackOverflow上找到一个类似的问题:

C++ 最佳实践 - 函数类型别名 std::function<T> 或 T

在C++中为函数类型声明类型别名时,什么被认为是最佳或良好实践(我知道这部分问题可能是主观的)?要么usingFuncType=void(int,int);或usingFuncType=std::function;两者之间有什么好处吗?例如,我应该如何将这些类型用作函数参数(当作为仿函数、lambda、成员或全局函数传递时)voidfoo(FuncType&&func){...}voidfoo(FuncTypefunc){...}voidfoo(std::functionfunc){...}编辑我知道并非我上面的所有示例都适用于#1和#2,但这不是重点。我想知道哪个(以及为什么)选项更

c++ - 使用多线程在 GNU C 中使用 Write Function 是否安全

将多个线程的函数调用写入同一个套接字安全吗?我们想在它们之间添加同步吗?它会引起诸如此类的问题吗应用程序从网络层到应用层的写入/读取延迟我们正在使用GNUC++库LinuxRedhat环境上的GCC4这是一个服务器端进程,其中服务器和客户端之间只有1个套接字连接服务器和客户端位于2台不同的机器上数据从服务器发送到客户端客户端到服务器问题1-当服务器向客户端发送数据时(多个线程通过同一个套接字向客户端写入数据)但是从某些线程写入的数据没有进入客户端,它甚至没有进入网络层同一台机器的(Tcpdump没有该数据)问题2-当客户端向服务器发送数据时,客户端发送的数据显示在服务器的TCPdump

c++ - 没有 typedef 的运算符 member_function_pointer_type()?

是否可以在不使用typedef的情况下创建一个operatormember_function_pointer_type()(即通过内联指定成员函数指针的类型)?例如,在实现SafeBoolIdiom时:classFoo{typedefvoid(Foo::*bool_type)()const;public:operatorbool_type()const;};是否可以在声明运算符时直接写出bool_type的类型?如果是,怎么办? 最佳答案 这似乎是唯一不能在不使用typedef的情况下声明(类型转换)operator的情况。如果它是

c++ - 错误 LNK2019 : unresolved external symbol ___iob_func referenced in function "void __cdecl Padding(int)"

使用FTDIAPI可以在VisualStudio2012下正常编译和链接。但在VS2014下,它给出:ErrorLNK2019:unresolvedexternalsymbol___iob_funcreferencedinfunction"void__cdeclPadding(int)"标准库有变化吗? 最佳答案 是的,标准库已经改变,FTDI似乎并不关心-至少从CDM2.12.18驱动程序版本开始不关心。问题在thisquestion的答案中描述。.ftd2xx.lib中devcon.obj的void__cdeclPadding(

c++ - 使用 shared_ptr 和 weak_ptr 来管理 std::function 的生命周期是否安全?

我已经围绕boost::asio::io_service创建了一个包装器来处理OpenGL应用程序的GUI线程上的异步任务。任务可能是从其他线程创建的,因此boost::asio似乎是这个目的的理想选择,这意味着我不需要编写自己的带有关联互斥锁和锁定的任务队列。我想将每帧完成的工作保持在可接受的阈值以下(例如5毫秒),所以我调用poll_one直到超出所需的预算,而不是调用run.据我所知,这需要我调用reset每当发布新任务时,这似乎运作良好。因为它很短,这里是全部内容,没有#include:typedefstd::functionVoidFunc;typedefstd::share