为什么std :: bind会占用太多参数?

时间:2015-07-02 16:22:45

标签: c++ language-lawyer c++14

昨天处理some weird stuff后,我的错误原因是std::bind可能需要的参数多于调用所需的参数

int f(int);
auto b = std::bind(f);
b(1,2,3,4,5,6); // 2-6 are discarded

cppreference声称:

  

如果调用g()时提供的某些参数与存储在g中的任何占位符不匹配,则会评估并丢弃未使用的参数。

通过标准搜索,我看不到任何支持此功能的内容。唯一可能使这个没问题的是:

  

20.9.2 / 4转发调用包装器是一个调用包装器,可以使用任意参数列表调用,并将参数作为引用传递给包装的可调用对象

因为,(我想)它并没有说"提供所有参数"但我不相信。

我的"为什么"在这个问题由两部分组成

  1. 该标准的哪些内容清楚表明允许std::bind放弃参数?

  2. 为什么这是理想的行为?对我来说,这感觉非常不可靠。我无法想到一个我非常想要的非人为的情况,但可以想到它会成为一个问题。是否以某种方式使我的实施变得更容易?

0 个答案:

没有答案