Я не знаю, почему это разрешено, но я знаю, что это ожидаемое поведение.Начиная с здесь :
bind может обрабатывать функции с более чем двумя аргументами, а его механизм подстановки аргументов является более общим:
bind(f, _2, _1)(x, y); // f(y, x)
bind(g, _1, 9, _1)(x); // g(x, 9, x)
bind(g, _3, _3, _3)(x, y, z); // g(z, z, z)
bind(g, _1, _1, _1)(x, y, z); // g(x, x, x)
Обратите внимание, что вВ последнем примере объект функции, созданный bind (g, _1, _1, _1), не содержит ссылок на какие-либо аргументы, кроме первого, но он все еще может использоваться с более чем одним аргументом. Любые дополнительные аргументы игнорируются (выделено мной), точно так же, как первый и второй аргументы игнорируются в третьем примере.