什麼是結合 使用autoconf
與shared_ptr
等TR1/BOOST的C++ 0x模板,以便最大限度地 可移植性和可維護性的最佳實踐?如何使用autoconf與C++ 0x特性的
隨着autoconf
我能確定shared_ptr
是否是 可以作爲std::tr1::shared_ptr
和/或boost::shared_ptr
。鑑於 ,同樣的功能有兩個不同的名字,我有以下 問題:
- 在代碼中,應該如何
shared_ptr
引用? - 應該
std::tr1::shared_ptr
優於boost::shared_ptr
?
對於第一,代碼當前正在使用的預處理程序條件 允許非合格引用shared_ptr
,一拉
#if HAVE_STD_TR1_SHARED_PTR
using std::tr1::shared_ptr;
#elif HAVE_BOOST_SHARED_PTR
using boost::shared_ptr;
#else
#error "No definition for shared_ptr found"
#endif
其次,代碼使用std::tr1::
超過boost::
以最小化對外部庫 依賴性(即使庫被廣泛使用的 )。
這兩種解決方案常見嗎?有更好的嗎?
我沒有看到你的模板typedef增加了原始海報的建議。他與shared_ptr「污染」的東西。你用SharedPtr :: Type污染了一些東西。兩者看起來都相當,而且他的打字也較少。 除了原始文章中的using語句之外,您的模板typedef還有什麼功能? –
2010-05-31 02:15:36
您點擊它:您不再需要將這些名稱提取到全局名稱空間中。我的方法不一定會添加全局名稱;你可以命名空間,如果你喜歡。如果你不這樣做,我的可能性與另一個圖書館中的姓名衝突的可能性就小得多。 – 2010-05-31 03:22:09
鑑於shared_ptr最終將在std ::中,並且autoconf可以確定在哪個名稱空間中定義了shared_ptr,如果沒有定義std :: shared_ptr,我傾向於使用「namespace std {using :: shared_ptr;}」。 –
themis
2010-05-31 20:29:08