相关疑难解决方法(0)

使用std :: bind和成员函数,对这个参数使用对象指针与否?

当使用std::bind绑定成员函数时,第一个参数是对象this指针.但是它可以将对象作为指针传递而不是.

请参阅以下程序:

#include <iostream>
#include <functional>

struct foo
{
    void bar(int v) { std::cout << "foo::bar - " << v << '\n'; }
};

int main()
{
    foo my_foo;

    auto f1 = std::bind(&foo::bar, my_foo, 1);
    auto f2 = std::bind(&foo::bar, &my_foo, 2);

    f1();
    f2();
}
Run Code Online (Sandbox Code Playgroud)

clang和GCC都没有投诉地编译它,结果适用于两个绑定:

foo::bar - 1
foo::bar - 2

我一直试图围绕规范(第20.8.9节),但它是我不太清楚的地方之一.

应该只有一个是正确的,还是都是正确的?

c++ language-lawyer c++11

62
推荐指数
1
解决办法
5万
查看次数

标签 统计

c++ ×1

c++11 ×1

language-lawyer ×1