gpt4 book ai didi

C++:你在使用 Loki 还是 Boost 作为仿函数?

转载 作者:IT老高 更新时间:2023-10-28 23:12:34 31 4
gpt4 key购买 nike

我一直在阅读 Alexandrescu 的书《现代 C++ 设计》,他使用的技术给我留下了深刻的印象,所以我想添加 Loki library到我的应用程序。

但是,经过进一步调查,我发现我已经在使用的 boost 提供了许多类似的功能(但并非全部,例如,我在 boost 中找不到单例)

由于基于策略的设计和仿函数,我最感兴趣的是使用 loki。

对我来说,boost 和 loki 各有利弊。我对 loki 的主要担忧是糟糕的文档(图书馆不再与书绑定(bind)),但在我看来,loki 在某些领域比 boost 更强大和灵活(我可能在那个方面错了)

在选择将 boost 或 loki 用于仿函数和策略之前,我想知道在现实生活中使用它们的人的意见。

有时在纸面上看起来很不错,但实际使用时却有一些缺点:)

最佳答案

Alexandrescu 有非常有趣的想法(类型列表、基于策略的类模板等),但其中很多都在 boost 中得到了改进,并在更广泛的编译器中进行了可移植性和正确性测试。

出于这些原因,我建议尽可能选择 boost。尽管如此,现代 C++ 设计仍然提供了对 C++ 灵 active 的大量洞察力,并深入了解了一个人的思维(非常好的思维)以解决许多常见的编程问题。

例如,基于策略的智能指针是一个非常巧妙的想法,但我们可以找到为什么 boost 作者选择不以这种方式实现 shared_ptr 和 scoped_ptr:

A. Parameterization discourages users. The shared_ptr template is carefully crafted to meet common needs without extensive parameterization. Some day a highly configurable smart pointer may be invented that is also very easy to use and very hard to misuse. Until then, shared_ptr is the smart pointer of choice for a wide range of applications. (Those interested in policy based smart pointers should read Modern C++ Design by Andrei Alexandrescu.)

如果您确实需要种类繁多的智能指针,并且您和您的团队习惯于广泛使用模板参数化,那么实现智能指针的基于策略的方法可能适合您。但是,scoped_ptr 和 shared_ptr(连同weak_ptr)往往会非常彻底地完成这项工作。策略类的组合行为可能更适合用于具有多种有用组合的事物。

尽管如此,Alexandrescu 仍有一些有趣的提议,但 boost 尚未解决。 MOJO例如,在编译器更好地实现移动构造函数或直到我们可以使用 C++0x 中的右值引用之前,它仍然非常有用。他对实现内存分配器也有一些非常有趣的想法。

至于问题,我们在商业项目中使用了 mojo 所需的部分 Loki,但主要是在适当的时候进行 boost 。

关于C++:你在使用 Loki 还是 Boost 作为仿函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3125702/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com