小编Xin*_*gx1的帖子

为什么我可以使用错误的参数进行 std::bind 成功?

#include <iostream>
#include <functional>

using callback = std::function<void(int, void*)>;

void AddCallback(callback cb) {}

void foo(int i) {}

int main() {
  auto f = std::bind(&foo, std::placeholders::_1);
  AddCallback(f);
}
Run Code Online (Sandbox Code Playgroud)

我用 g++ 9.3.0 和 clang++ 10.0.0 尝试了代码,它们都编译结束没有错误。

绑定结果和回调的类型是否相同?一个是std::function<void(int, void*)>,另一个是等于std::function<void(int)>什么?为什么我可以AddCallback()用不同的类型调用?

c++ stdbind c++11

7
推荐指数
1
解决办法
138
查看次数

为什么 std::fetch_add 返回旧值?

是什么设计目的或者技术限制导致返回值std::fetch_add变成了之前的值?

c++ language-design atomic c++11 stdatomic

1
推荐指数
1
解决办法
1601
查看次数

标签 统计

c++ ×2

c++11 ×2

atomic ×1

language-design ×1

stdatomic ×1

stdbind ×1