Biblioteca de parâmetros de reforço
Recentemente eu encontreiParâmetros biblioteca no Boost. Honestamente, não entendi a razão pela qual isso é parte do Boost. Quando há necessidade de passar vários parâmetros para a função você pode fazer uma estrutura a partir deles, como:
struct Parameters
{
Parameters() : strParam("DEFAULT"), intParam(0) {}
string strParam;
int intParam;
};
void foo(const Parameters & params)
{
}
Parameters params;
params.intParam = 42;
foo(params);
Isso é muito fácil de escrever e entender. Agora exemplo com o uso de parâmetros de impulso:
BOOST_PARAMETER_NAME(param1)
BOOST_PARAMETER_NAME(param2)
BOOST_PARAMETER_FUNCTION(
(void), // 1. parenthesized return type
someCompexFunction, // 2. name of the function template
tag, // 3. namespace of tag types
(optional // optional parameters, with defaults
(param1, *, 42)
(param2, *, std::string("default")) )
)
{
std::cout << param1 << param2;
}
someCompexFunction(param1_=42);
Eu acho que é muito complexo, e o benefício não é tão significativo.
Mas agora vejo que algumas das bibliotecas do Boost (Asio) usam essa técnica. É considerada uma prática recomendada usar essa biblioteca para passar muitos argumentos?
Ou talvez haja benefícios reais de usar essa biblioteca que não vejo? Você recomendaria usar essa biblioteca no projeto?