昨天处理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转发调用包装器是一个调用包装器,可以使用任意参数列表调用,并将参数作为引用传递给包装的可调用对象
因为,(我想)它并没有说"提供所有参数"但我不相信。
我的"为什么"在这个问题由两部分组成
该标准的哪些内容清楚表明允许std::bind
放弃参数?
为什么这是理想的行为?对我来说,这感觉非常不可靠。我无法想到一个我非常想要的非人为的情况,但可以想到它会成为一个问题。是否以某种方式使我的实施变得更容易?