簡體   English   中英

為什么boost包含兩個不同版本的strong_typedef.hpp?

[英]Why does boost include two different versions of strong_typedef.hpp?

在我最近建立一個項目時,我注意到有一個關於重新定義的BOOST_STRONG_TYPEDEF宏的編譯器警告(轉向錯誤)。 經過進一步調查,我注意到strong_typedef.hpp包含兩個不同版本的strong_typedef.hpp :一個位於頂層,一個位於serialization/

兩個版本之間實際上也存在差異,而不僅僅是宏的重復版本。 頂級版本沒有顯式值 - 初始化它的T而序列化版本執行:

代碼剪輯:

boost/strong_typedef.hpp

    T t;                                                        \
    explicit D(const T t_) : t(t_) {};                          \
    D(){};                                                      \
    D(const D & t_) : t(t_.t){}                                 \

boost/serialization/strong_typedef.hpp

    T t;                                                        \
    explicit D(const T t_) : t(t_) {};                          \
    D(): t() {};                                                \
    D(const D & t_) : t(t_.t){}                                 \

為什么有兩個不同版本的宏,哪一個作為實現更有意義? 將強制內置類型初始化的那個,或者不強制內置類型的那個(盡可能地模仿基礎類型強類型化)?

我是boost/strong_typedef.hpp兩個版本的作者。

由於強烈反對直接包含在boost基本標題中,我轉移到了序列化庫。 為了保持向后兼容性,我把它留在了boost base頭目錄中。 我忘了將此文件合並到發布分支中,因此會出現警告。 我也忘了將名稱更改為BOOST_SERIALIZATION_STRONG_TYPEDEF 從那時起,我將初始化添加到基類。 我想自從我進行了拆分后,我在序列化庫中包含了版本修正。

我只是查看了序列化庫,現在使用strong_typedef是最小的。 我想我會徹底解決它。 那么它就會完全消失。

它應該是一個單獨的實用程序。 但我無法真正處理所需的所有提升(測試,文檔,構建,審查)。 並且boost對於這些小型頭文件實用程序沒有一個非常好的位置。 有一天,我希望序列化庫所需的這些小工具將遷移到boost基礎。 但是我開始對這個想法感到氣餒。

看起來boost/strong_typedef.hpp目錄是一個歷史工件。

缺少t成員的顯式初始化是幾年前在svn修訂版71183中修復的boost/serialization/strong_typedef.hpp的錯誤 。請參閱錯誤標記。

在Boost的Subversion主干中, boost/strong_typedef.hpp是一個很空的文件,它說:

#error "This header is deprecated. Please use: boost/serialization/strong_typedef.hpp"

這個變化,r48575,是在2008年制作的 - 我不知道為什么它從未被合並到一個版本中。 也許是因為它會在沒有很大好處的情況下打破用戶,或者可能是一種疏忽。 同樣的變化(r48575)是在trunk中創建boost/serialization/strong_typedef.hpp的。

如果他們不想破壞現有用戶,那么被棄用的文件可能只包含boost/serialization的文件,因此只有一個規范的實現。 在任何情況下,似乎如果你可以避免使用boost/strong_typedef.hpp使用serialization中的那個,這就是我的建議。

作為旁注,請記住,一年前Boost Serialization(和strong_typedef.hpp )的作者Bob Ramey 在另一個關於strong_typedef.hpp 錯誤票據中發表了評論 ,您可能會感興趣:

我認為序列化庫不再使用它了。 當然它還在那里。 我不知道是否有人使用它。

暫無
暫無

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

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