草庐IT

mysqli_stmt_bind_param

全部标签

c++ - std::bind 通常与仅移动类型一起使用,特别是 std::unique_ptr 吗?

我正在尝试使用boost::asio并遇到了一些问题。我正在尝试编译以下代码:std::unique_ptrbuffer=buffers.pop();std::functiont=std::bind(&tcp_client::handle_read_done,this,std::placeholders::_1,std::placeholders::_2,std::move(buffer));如果我排除std::move(buffer),一切正常,当然是从handle_read_done的签名和作为std::bind中传递的参数。当试图将它传递给boost::asio::async_r

c++ - 临时绑定(bind)到引用参数的默认参数的生命周期是多少?

我认为引用只会将临时对象的生命周期延长到引用本身的生命周期,但以下代码片段的输出似乎自相矛盾:#includestructX{~X(){std::coutLiveexample.输出:Insidef()Insideg()Goodbye,cruelworld!所以看起来临时文件在g()被调用后被销毁了……是什么原因? 最佳答案 标准在§12.2[class.temporary]中的特殊情况下处理此问题:p4Therearetwocontextsinwhichtemporariesaredestroyedatadifferentpoin

c++ - Boost::Bind 和虚函数重载:它们为什么起作用?

我写了一些代码,但害怕它不会工作-所以我写了一个原型(prototype):#include#include#includeclassbase{private:boost::functionaction;protected:virtualvoidonDataBaseReady(inti){std::cout编译和工作。(输出20)。但为什么?我也在VS2010下测试过,想知道它是否可以跨平台工作(比如在GCC下编译)?主要是action=boost::bind(&base::onDataBaseReady,this,_1);吓到我了——我们说&base::...

c++ - 绑定(bind) lambda 的速度(通过 std::function)与仿函数结构的 operator()

autolam=[](inta,intb,intc){returna在版本一中,我们std::vector>lamvals;//getparametersandforeachlamvals.emplace_back(std::bind(lam,a,std::placeholders::_1,b));替代方案是std::vectorlamvals;//getparametersandforeachlamvals.emplace_back(functor{a,b});在这两种情况下我们都有一个简单的迭代returnstd::any_of(lamvals.cbegin(),lamvals.c

c++ - 如何结合使用 std::bind 和 std::shared_ptr

我需要经常做这样的事情:AsyncOperation*pAsyncOperation=newAsyncOperation();autobindOperation=std::bind(&AsyncOperation::operator(),std::ref(*pAsyncOperation));std::threadthread(bindOperation);thread.join();AsyncOperation是实现operator()(也称为函数对象)的任何自定义类。是否可以指示std::bind使用std::shared_ptr而不是std::ref?这将防止内存泄漏,而无需我保

c++ - std::bind() - 从派生类的成员函数中获取基保护成员函数

我想从派生类bind()到我的基类版本的函数。该功能在基础中被标记为protected。当我这样做时,代码在Clang(AppleLLVM编译器4.1)中编译愉快,但在g++4.7.2和VisualStudio2010中都出现错误。错误如下:“'Base::foo':不能访问protected成员。”这意味着引用的上下文实际上在bind()中,当然函数在其中被视为protected。但是bind()不应该继承调用函数的上下文——在本例中是Derived::foo()——因此将基方法视为可访问的?下面的程序说明了这个问题。structBase{protected:virtualvoidf

c++ - const 上的结构化绑定(bind)

下面的代码可以编译吗?#includevoidfoo(){conststd::pairx={1,2};auto[a,b]=x;static_assert(std::is_const_v);static_assert(std::is_const_v);}MSVC说“是的!”。GCC说“哦,不,伙计!”。Clang说“不行!”。那么,这是MSVC错误吗?这里的标准并不简单(我快速浏览了一下),但考虑到auto的规则,我想,a和b应该被复制并丢弃cv-qualifier。 最佳答案 Isthefollowingcodesupposedto

c++ - std::bind 类成员函数

我有这个代码:#include#includestructFoo{intget(intn){return5+n;}};intmain(){Foofoo;autoL=std::bind(&Foo::get,&foo,3);std::cout似乎是这样的:autoL=std::bind(&Foo::get,&foo,3);相当于:autoL=std::bind(&Foo::get,foo,3);为什么? 最佳答案 std::bind()按值接受其参数。这意味着在第一种情况下,您将按值传递一个指针,从而得到一个指针的拷贝。在第二种情况下,

c++ - 是否可以在 boost::test 上使用自动注册的 BOOST_PARAM_TEST_CASE?

是否可以以任何方式将BOOST_AUTO_TEST_CASE和BOOST_AUTO_TEST_CASE_TEMPLATE宏与BOOST_PARAM_TEST_CASE混合使用?我什至对实现这一目标的非常困惑的方式很感兴趣。必须手动构建所有测试用例似乎非常乏味。但是BOOST_PARAM_TEST_CASE机制非常有用,但只有在您有测试初始化​​函数时才有效,这反过来又要求您必须使用手动测试用例构造。是否有关于如何自己连接到自动化系统的文档,以便您可以提供自己的自动注册测试?我现在正在使用boost1.46。 最佳答案 我为此写了自己

c++ - 你如何将 boost::bind 对象传递给函数?

我有一个一维函数最小化器。现在我正在向它传递函数指针。然而,许多函数有多个参数,其中一些参数是固定的。我已经使用像这样的仿函数实现了这个templateminimize(T&f){}Functorf(param1,param2);minimize(f);然而,仿函数定义有很多问题。Boost::bind看起来更干净。这样我就可以:minimize(boost:bind(f,_1,param1,param2))但是我不清楚我的minimize声明应该喜欢使用boost::bind。boost::bind是什么类型的对象?是否有一个简单的模式可以避免仿函数的样板,但允许多个参数绑定(bin