Boost Parameter Library allows to write functions and class templates that can accept arguments by name
In C++, arguments are normally given meaning by their positions with respect to a parameter list: the first argument passed maps onto the first parameter in a function's definition and so on. That protocol is fine when there is at most one parameter with a default value, but when there are even a few useful defaults, the positional interface becomes burdensome.
The library addresses the problem outlined by associating each parameter name with a keyword object.