簡體   English   中英

C ++:你是否正在使用Loki或Boost進行仿函數?

[英]C++: Are YOU using Loki or Boost for functors ?

我一直在閱讀Alexandrescu的書,現代C ++設計,我對他使用的技術印象深刻,所以我想在我的應用程序中添加Loki庫

然而,經過進一步的調查,我看到我已經在使用的提升提供了很多類似的功能(不是全部,但是,例如,我無法在boost中找到單例)

由於基於策略的設計和仿函數,我最感興趣的是使用loki。

對我而言,boost和loki都有利有弊。 我對loki的主要關注是糟糕的文檔(圖書館不再與書籍聯系在一起了)但在我看來,loki比某些領域的提升更強大,更靈活(我可能錯了)

在選擇使用boost或loki作為仿函數和策略之前,我想知道在現實生活中使用它們的人的意見。

有時在紙上看起來非常好但是當你真正使用它們時會有一些缺點:)

Alexandrescu有非常有趣的想法(類型列表,基於策略的類模板等),但其中很多已經在boost中進行了改進,並且在更廣泛的編譯器中進行了測試,以實現可移植性和正確性。

我建議只要出於這些原因,盡可能選擇增強。 也就是說,現代C ++設計仍然提供了很多關於C ++靈活性的見解,並且可以深入了解一個人的思想(非常好的)來解決許多常見的編程問題。

例如,基於策略的智能指針是一個非常巧妙的想法,但我們可以找到為什么boost作者選擇不以這種方式實現shared_ptr和scoped_ptr:

A.參數化不鼓勵用戶。 shared_ptr模板經過精心設計,無需大量參數化即可滿足常見需求。 有一天,可能會發明一種高度可配置的智能指針,它也非常容易使用並且很難被濫用。 在此之前,shared_ptr是各種應用程序的首選智能指針。 (那些對基於策略的智能指針感興趣的人應該閱讀Andrei Alexandrescu的Modern C ++ Design。)

如果您確實需要各種各樣的智能指針,並且您和您的團隊很樂意在模板參數化方面進行廣泛的工作,那么實現智能指針的基於策略的方法可能對您有用。 但是,scoped_ptr和shared_ptr(以及weak_ptr)傾向於完全完成這項工作。 策略類的組合行為可能更適用於存在各種有用組合的事物。

盡管如此,Alexandrescu仍然提出一些有趣的建議,即提升尚未解決。 例如,在編譯器更好地實現移動構造函數或者直到我們可以使用來自C ++ 0x的右值引用之前, MOJO仍然真正有用。 他還對實現內存分配器有一些非常有趣的想法。

至於這個問題,我們在我們的商業項目中使用了mojo所需的部分,但是在適當的時候大多提升。

可以考慮的一件事是,升級庫必須在驗收期間通過同行評審過程。 在那之后,我當然相信對變化的影響確實很少,但至少在接受之前會有一些評論。 Loki只是一個人的願景。 當然亞歷山大里斯庫是相當不錯的,但仍然......這都是他的想法,並沒有比那更進一步的評論。

我在整個C ++環境中使用Boost,就像標准庫的擴展(使用VC9和VC10)。

我不會在所有項目中使用它。

我在個人項目(主要是游戲)中使用它,在那里我完全控制了什么是依賴項。

我在一個大型游戲項目中使用boost :: function(還有一些來自boost的其他庫)。

Loki也很好,但我覺得不需要。 我認為我正在考慮使用的庫的唯一部分是Singleton,但我正在使用一個當前足夠好的自定義庫。

C ++ 0x是我用於快速函數對象的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM