Boost Parameter Library allows to write functions and class templates that can accept arguments by name