...because swapping in the new standards-based implementation leads to compile failures on tests to cover out-of-bounds cases. Under the (wrong) assumption, that some mistake must be hidden in the Splice-metafunction, I first provided a complete test coverage; while the actual problem was right below my nose, and quite obvious... The old implementation, being based on a case distinction over the argument count, simply was not able even to notice excess arguments; other the new implementation, based on variadics and `std::apply`, which is fully generic and thus passes excess arguments to `std::bind` when a position beyond the actual argument list is specified to be closed. The old behaviour was to silently ignore such an out-of-bounds spec, and this can be reinstated by explicitly capping the prepared tuple of binders and actual arguments passed to `std::bind` Another question of course is, if being tolerant here is a good idea. And beyond that, function-closure.hpp is still terrifyingly complex, unorganised and use-case driven, to start with....
9.6 MiB
9.6 MiB
| The file is too large to be shown. |