My main problem with these solutions is that they're largely runtime
solutions. Not that calling a function with named parameters is very likely
to happen in an inner loop, now I think of it...
I imagined the foo("b", 100, "d", true) version to be largely CT: variadic list, testing and extracting done at CT.
As for the one accepting AAs, I don't know.