C++ 11提供了std::allocator_traits
類作爲使用分配器的標準方式。靜態功能std::allocator_traits::construct()
需要指針到應該構建對象的位置。然而,std::allocator_traits::allocate()
靜態函數會返回一個值allocator::pointer
,該值只需要像指針一樣工作,但不一定是一個(一般來說,儘管std::allocator::pointer
必須是指針)。allocator_traits :: construct()vs allocator_traits :: allocate()
如果一般情況下他們會使用不兼容的類型,應該如何使用分配和構造靜態方法?只有在pointer
類型實際可轉換爲普通的普通指針時纔可以使用它們嗎?
+1這是一個非常有見地的問題。有很少的C++程序員在探索這些水域。執行者必須。這導致我問這個問題:你是一個std :: lib實現者嗎? –
@HowardHinnant:謝謝!這個問題與一個小型矢量類的設計相關,它在std :: vector上有一些額外的花招和口哨聲(例如,自動使用多達幾個元素的靜態存儲,支持SSE和其他矢量指令等)。只是想嘗試在分配器支持方面採取「適當」的方式。 – bluescarni