C ++“命名参数成语”与Boost :: Parameter库

我已经查看了命名参数Idiom和Boost :: Parameter库 。 每个人都有什么优势? 是否有理由相互select一个,或者在某些情况下,每个人都可以比另一个更好(如果是,在什么情况下)?

实现Named参数Idiom非常简单,几乎和使用Boost :: Parameter一样简单,所以它可以归结为一个要点。

– 你已经有提升依赖? 如果你不这样做,Boost ::参数不够特殊,不值得添加依赖。

就个人而言,我从来没有见过生产代码中的Boost ::参数,100%的时间它是一个自定义的命名参数实现,但这不一定是件好事。

通常,我是Boost的忠实粉丝,但是我不会使用Boost.Parameter库,原因有两个:

  1. 如果您不知道发生了什么事情,那么在调用之前,调用看起来像是在调用函数的作用域中为variables赋值。 这可能很混乱。
  2. 有太多的样板代码需要首先设置它。

另一点,虽然我从来没有使用命名参数成语,我已经使用Boost参数定义多达20个可选参数。 而且,我的编译时间是疯狂的。 过去需要几秒钟,现在需要30秒。 如果你有一个使用你使用boost参数编写的一个小应用程序的东西的库,这就加起来了。 当然,我可能会错误地执行,但我希望这个改变,因为除此之外,我真的很喜欢它。

命名参数成语是一个很简单的。 我看不到(现在)为什么我们需要Boost :: Parameter库的复杂性。 (即使是所谓的“function”推导参数,似乎是一种引入编码错误的方法;))

您可能不希望一般应用程序逻辑的Boost.Parameter太多,因为您希望它可以用于您正在开发的库代码,因为它可以为库的客户端节省很多时间。

从来没有听说过,但审查的链接,命名参数是方便,更明显的理解。 我会在推动实施的心跳中select它。