最近、Boostにパラメータライブラリが見つかりました。正直なところ、これがBoostの一部である理由がわかりませんでした。関数にいくつかのパラメーターを渡す必要がある場合は、次のようにそれらから構造を作成できます。
struct Parameters
{
Parameters() : strParam("DEFAULT"), intParam(0) {}
string strParam;
int intParam;
};
void foo(const Parameters & params)
{
}
Parameters params;
params.intParam = 42;
foo(params);
これは非常に書きやすく、理解しやすいものです。ブーストパラメータを使用した例:
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);
本当に複雑で、メリットはそれほど重要ではないと思います。
しかし、Boostライブラリ(Asio)の一部がこの手法を使用していることがわかりました。このライブラリを使用して多くの引数を渡すことがベストプラクティスと見なされますか?
それとも、私には見えないこのライブラリを使用することの本当の利点がありますか?プロジェクトでこのライブラリを使用することをお勧めしますか?