簡體   English   中英

通過 EBCO 繼承分配器時復制 C++ 個分配器

[英]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.

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