[英]Copying C++ allocators when allocator is inherited via EBCO
如果容器通過 EBCO(空基 class 優化)獲得它的分配器函數,例如:
template <class T, class allocator = std::allocator<T>>
class a_container : private allocator;
當該容器將另一個容器復制到其中,而另一個容器的分配器不等效(或為空)時會發生什么? 如果新分配器有 state,如果目標容器的分配器是無狀態的,那么 state 是如何復制到目標容器中的? 如果使用 EBCO,實際的 class 似乎沒有空間來存儲 state。
其次,分配器的復制是如何進行的? 是static_cast<allocator &>(*this) = source.get_allocator();
合理的?
當該容器將另一個容器復制到其中,而另一個容器的分配器不等效時會發生什么?
編譯時錯誤。 std::vector<T, std::allocator<T>>
不可分配給std::vector<T, some_other_allocator<T>>
,它們是不同的類。
其次,分配器的復制是如何進行的?
與任何其他可簡單復制的子對象相同。 object表示的0字節被復制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.