Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

實現

如果 Boost.TR1 被配置 為使用你的標準庫中的原生 TR1 實現,則它不需要做多少事情:它只是包含適當的頭文件就行了。

如果 Boost.TR1 使用了某個組件的 Boost 實現,則它需要包含適當的 Boost 頭文件並使用聲明將所需的名字導入到 namespace std::tr1 中。注意,只有作為標準部分的聲明會被導入:本實現有意非常嚴格地沒有將所有 Boost-特有的擴展引入到 namespace std::tr1,這是為了能夠捕獲用戶代碼中的任何可移植性錯誤。如果你真的需要使用 Boost-特有的擴展,則你應當直接包含 Boost 頭文件,則改用 namespace boost:: 中的聲明。注意,本實現的風格並不是完全符合標準的,它不能將用戶自定義的 TR1 組件的模板特化增加到 namespace std::tr1 中。還有一到兩個 Boost 庫尚未完全符合標準,任何與標準不符的地方都已在 "TR1 的分類"一節 中說明。不過幸好,這些不符合標準的行為在實際中極少會用到。

如果你使用標準的頭文件包含(在 boost/tr1/tr1 中),則這些頭文件名有時可能與現有的標準庫頭文件衝突(例如 shared_ptr 已增加到現有的標準庫頭文件 <memory> 中而不是它自己的頭文件)。這些頭文件可以用以下兩種方法之一前轉到現有的標準庫頭文件:對於 gcc,使用 #include_next, 而對於其它編譯器則使用宏 BOOST_TR1_STD_HEADER(header) (在 boost/tr1/detail/config.hpp 中定義),它將擴展為 #include <../include/header>. 對於大多數編譯器,這樣就可以直接使用,但是這意味著這些頭文件不能被放在名為"include"且已在你的編譯器搜索路徑中的目錄下。

Copyright © 2005 John Maddock

PrevUpHomeNext