Basically, it reduces to pack parameters together into a a std::tuple-like template class. Here's the explanation.…
Parameters vs. arguments
I love being pedantic with students :) These two terms are sometimes loosely used interchangeably; in particular, "argument" is sometimes used in place of "parameter". Nevertheless, there is a difference. Properly, parameters appear in procedure definitions; arguments appear in procedure calls. Source…
Bring named parameters in modern C++
Reddit discussion here…
std::decay
std::decay returns the type of a parameter, as if that parameter was passed by value. Interesting interpretation. I always intended std::decay as a way to deduce the type resulting from array to pointer decay. But this is indeed limiting, as stated by cppreference: This is the type conversion…