草庐IT

bessel-functions

全部标签

c++ - 将带有存储在 std::function 中的捕获子句的 lambda 转换为原始函数指针

自从我的lastrecentquestion不幸的是措辞导致了另一个问题的解决方案,然后是我的,在这里我将尝试以清晰的方式阐述我的实际问题。在我们开始之前,作为旁注,我正在将JavascriptEngineV8集成到我的C++应用程序中。这就是示例中所有类型的来源。这也是我最后需要一个原始函数指针的原因。但我会在下面详细说明。我需要从一个类内部传递一个带有捕获子句的lambda表达式[=]作为std::function类型的参数到另一个函数并将其转换为那里的原始函数指针。在此代码中,InvocationCallback只是带有签名Handle(Argumentsconst&)的函数的t

c++ - 接口(interface)设计: safety of overloaded function taking string and char array

假设我们有一个类可以写入输出内容classWriter{public:intwrite(conststd::string&str);intwrite(constchar*str,intlen);//...};我对这个、它的灵active以及所有这些都很好,直到我意识到char*buf=newchar[n];//notterminatedwith'\0'//loadupbufWriterw;w.write(buf);//compiles!那是一个真的讨厌的错误。我们可以通过一些模板进行一些修改classWriterV2{public:intwrite(conststd::string&s

C++14:具有通用 std::function 作为类成员的通用 lambda

考虑这个伪片段:classSomeClass{public:SomeClass(){if(true){fooCall=[](autoa){coutstd::functionfooCall;};我想要的是一个存储通用lambda的类成员fooCall,它又在构造函数中赋值。编译器提示fooCall不能成为模板化数据成员。有没有关于如何在类中存储通用lambda的简单解决方案? 最佳答案 您无法在运行时在两个通用lambda之间进行选择,因为您没有具体的签名来进行类型删除。如果您可以在编译时做出决定,您可以将类本身模板化:templat

c++ - boost::function 运行时性能

我正在为动态加载的库实现一个独立于平台的包装器。当然,当我从库中加载函数时,我需要将它们存储为指针以供将来使用。我考虑过使用boost::function而不是普通的函数指针。当然,这会增加编译时间,但这不是我所担心的。相反:在调用存储函数时,boost::function引入的开销是多少?有吗?有多大?我想我不时调用这些函数不会有太多开销,但是,那些被调用很多的函数呢?(极端的例子,加载的GL库上的glVertex)。它会对性能造成多大的影响?Source-divingboost回答不多:>。此外,如果它依赖于编译器,我主要对GCC和MSVC感兴趣。 最佳

c++ - 使用 boost::bind 和 boost::function 作为回调的类成员函数

我正在努力设置一个成员函数作为我正在使用的C库的回调。C库像这样设置回调:typedefint(*functionPointer_t)(myType1_t*,myType2_t*,myType3_t*);setCallback(param1,param2,functionPointer,param4)我想使用boost::bind(如果可能的话)来传递函数指针。我更希望被指向的函数是实例化类的成员,而不是静态成员。例如ClassA{public:A();protected:intmyCallback(myType1_t*,myType2_t*,myType3_t*);//akafunc

c++ - 为什么 g++ 从带有转换运算符和不可访问的函数调用运算符的类型中初始化 std::function<> 失败?

此代码在g++4.9及更高版本(包括从svncurrent构建)中失败,但在没有警告的情况下使用clang++和Microsoft编译器(来自VS2015。)编译#includestructA{voidoperator()()const{}};structB{voidoperator()()const{}};structC:privateA,privateB{operatorstd::function()const{returnnullptr;}};intmain(){std::functionf{C{}};}main()中f的构造失败,因为operator()在structC中不明确

c++ - 可以使用默认参数复制包含 lambda 的 std::function 吗?

有没有什么方法可以从lambda恢复类型信息,默认参数存储在std::function中,但其类型中没有这些参数?std::functionf1=[](inti=0){};std::functionf2=[](inti=0){};std::functionf3=f1;//errorstd::functionf4=f2;//error看看std::function的复制构造函数,其他函数类型没有部分模板特化,所以我想这个信息丢失了,这只是你不能将一种类型的函数分配给的情况另一种类型的函数,即使在内部它们都可以调用该函数。这个对吗?是否有任何解决方法来实现这一目标?我正在查看std::fu

c++ - 使用 std::function 的隐式转换

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:Whycan'tmyC++compilerdeducetemplateargumentforboostfunction?Isn'tthetemplateargument(thesignature)ofstd::functionpartofitstype?我有以下内容:#includevoidFoo(std::function);voidFoo(std::function);voidBar();intmain(){Foo(Bar);//Error:ambiguousFoo([](){});//Error:am

c++ - 错误 C4996 : 'std::_Copy_impl' : Function call with parameters that may be unsafe

我知道这个问题在SO中被问过很多次,但这是与其他问题的不同。CompilerError:FunctioncallwithparametersthatmaybeunsafeVisualStudioWarningC4996xutility(2227):warningC4996:'std::_Copy_impl'失败的代码片段DWORDdwNumberOfNames=pExportDirectory->NumberOfNames;LPDWORDdwNames=(LPDWORD)((LPBYTE)hDLL+pExportDirectory->AddressOfNames);std::vecto

c++ - 类型特征 : Check if class have specific function (maybe inherit)

我知道有很多方法可以检测一个类是否具有特定功能,但没有一种方法真正适合我的具体情况。我当前用于检查正确成员函数的实现工作正常,继承函数除外。#includetemplateclassHasFoo{templatestructCheck;templatestaticstd::true_typeTest(Check*);templatestaticstd::false_typeTest(...);public:staticconstexprboolvalue=decltype(Test(0))::value;};structA{intfoo(float);};structB:publicA