C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- std::addressof
- std::allocator_traits
- std::default_delete
- std::allocator_arg_t
- std::allocator_arg
- std::weak_ptr
- std::enable_shared_from_this
- std::bad_weak_ptr
- std::unique_ptr
- std::scoped_allocator_adaptor
- std::auto_ptr
- std::destroy_at
- std::destroy
- std::destroy_n
- std::uninitialized_move
- std::uninitialized_value_construct
- std::owner_less
- std::shared_ptr
- std::to_address
- std::assume_aligned
- std::make_obj_using_allocator
- C å å管çåº
- ä½å±å å管ç
- std::pmr::memory_resource
- std::allocator
- std::pointer_traits
- std::uses_allocator
- std::uses_allocator_construction_args
- std::uninitialized_construct_using_allocator
- std::pmr::polymorphic_allocator
- std::pmr::get_default_resource
- std::pmr::set_default_resource
- std::pmr::new_delete_resource
- std::pmr::null_memory_resource
- std::pmr::synchronized_pool_resource
- std::pmr::unsynchronized_pool_resource
- std::pmr::monotonic_buffer_resource
- std::pmr::pool_options
- std::raw_storage_iterator
- std::get_temporary_buffer
- std::return_temporary_buffer
- std::uninitialized_copy
- std::uninitialized_fill
- std::uninitialized_default_construct
- std::uninitialized_copy_n
- std::uninitialized_fill_n
- std::uninitialized_move_n
- std::uninitialized_default_construct_n
- std::uninitialized_value_construct_n
- std::construct_at
- std::align
- 注é
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >卿å å管ç > std::uses_allocator
std::uses_allocator
| å®ä¹äºå¤´æä»¶ <memory>
|
||
| template< class T, class Alloc > struct uses_allocator; |
(C++11 èµ·) | |
è¥ T æ¥æï¼1ï¼å
åµå®ä¹ç±»å allocator_type ï¼å¹¶ä¸è¯¥ç±»åè½ä» Alloc 转æ¢ï¼2ï¼æè
è¯¥ç±»åæ¯ std::experimental::erased_type çå«å (åºåºç¡ TS)ï¼åæå常é value 为 true ãå¦å value 为 false ã
è¾ å©å鿍¡æ¿
| template< class T, class Alloc > inline constexpr bool uses_allocator_v = uses_allocator<T, Alloc>::value; |
(C++17 èµ·) | |
ç»§æ¿èª std::integral_constant
æå常é
| value [éæ] |
è¥ T 使ç¨åé
å¨ Allocå为 true ï¼å¦å为 false (å ¬å¼éææå常é) |
æå彿°
| operator bool |
转æ¢å¯¹è±¡ä¸º bool ï¼è¿å value (å ¬å¼æå彿°) |
| operator() (C++14) |
è¿å value (å ¬å¼æå彿°) |
æåç±»å
| Â | |
| ç±»å | å®ä¹ |
value_type
|
bool
|
type
|
std::integral_constant<bool, value> |
使ç¨åé 卿é
ä¼ éåé
å¨ alloc ç»æç±»å T çæé 彿°æä¸ç§çº¦å®ï¼
- è¥
Tä¸ä½¿ç¨å ¼å®¹çåé å¨ï¼ std::uses_allocator_v<T, Alloc> 为falseï¼ï¼å忽ç¥allocã - å¦å std::uses_allocator_v<T, Alloc> 为
trueï¼è
- è¥
T使ç¨å导åé å¨çº¦å®ï¼å¯ç¨ T(std::allocator_arg, alloc, args...) è°ç¨ï¼ï¼å使ç¨åé 卿é ä½¿ç¨æ¤å½¢å¼ - è¥
T使ç¨å°¾éåé å¨çº¦å®ï¼å¯ç¨ T(args..., alloc) è°ç¨ï¼ï¼å使ç¨åé 卿é ä½¿ç¨æ¤å½¢å¼ - å¦åï¼ç¨åºä¸ºç
å¼ï¼è¿è¡¨ç¤º std::uses_allocator_v<T, Alloc> 为
trueï¼ä½ç±»åä¸éµå®äºç§å 许ç约å®ä¹ä¸ï¼
- è¥
- ä½ä¸ºç¹ä¾ï¼ std::pair 被å½å使ç¨åé
å¨ç±»åï¼å³ä½¿
std::uses_allocator对pair为falseï¼ä¸åäº std::tuple çï¼ï¼è§ std::polymoprhic_allocator::construct ä¸ std::scoped_allocator_adaptor::construct (C++20 å)std::uses_allocator_construction_args (C++20 èµ·) çpairç¹å®éè½½ã
|
å·¥å ·å½æ° std::make_obj_using_allocator å std::uninitialized_construct_using_allocator å¯ç¨äºæ¾å¼å建éµå¾ªä¸è¿°åè®®ç对象ï¼è std::uses_allocator_construction_args è½ç¨äºåå¤å¹é ç±»åææå¾ ç使ç¨åé 卿é çå£å³çå®åå表ã |
(C++20 èµ·) |
ç¹å
ç±»åç¹æ§ std::uses_allocator çèªå®ä¹ç¹åå¯¹æ æå typedef allocator_type çç±»åå
许ï¼ä½å¿
须满足ä¸åäºä¸ªè¦æ±ä¹ä¸ï¼
T æ¥ææ¥æ¶ Alloc 为æååæ°çæé 彿°ãä¸è¿°æ
åµä¸ï¼ Alloc æ¯æ»¡è¶³åé
å¨ (Allocator) è¦æ±çç±»åï¼ææ¯å¯è½¬æ¢å° std::experimental::pmr::memory_resource* çæéç±»å (åºåºç¡ TS)ã
æ ååºå·²æä¾ä¸åç¹åï¼
| ç¹å std::uses_allocator ç±»åç¹å¾ (类模æ¿ç¹å) | |
| ç¹å std::uses_allocator ç±»åç¹æ§ (彿°æ¨¡æ¿) | |
| ç¹å std::uses_allocator ç±»åç¹æ§ (彿°æ¨¡æ¿) | |
| ç¹å std::uses_allocator ç±»åç¹æ§ (彿°æ¨¡æ¿) | |
| (C++11) (C++17 å) |
ç¹å std::uses_allocator ç±»åç¹æ§ (类模æ¿ç¹å) |
| ç¹å std::uses_allocator ç±»åç¹å¾ (类模æ¿ç¹å) | |
| (C++11)(C++17 å) |
ç¹å std::uses_allocator ç±»åç¹å¾ (类模æ¿ç¹å) |
注æ
std::scoped_allocator_adaptor ã std::tuple å std::pmr::polymorphic_allocator ä½¿ç¨æ¤ç±»åç¹æ§ãèªå®ä¹åé 卿å°è£ ç±»å亦å¯ä½¿ç¨ä¹ï¼ä»¥ç¡®å®è¦æé ç对象ææåæ¯å¦è¶³ä»¥ä½¿ç¨åé å¨ï¼ä¾å¦æ¯å®¹å¨çæ åµï¼ï¼è¯¥æ åµä¸åºä¼ éåé å¨ç»å ¶æé 彿°ã
åé
| (C++11) |
ç¨äºéæ©å
·åé
å¨çæé 彿°ç std::allocator_arg_t 对象 (常é) |
| (C++11) |
æ ç¾ç±»åï¼ç¨äºéæ©å
·åé
å¨çæé 彿°éè½½ (ç±») |
| åå¤å¹é
ç»å®ç±»åæè¦æ±ç使ç¨åé
卿é çå£å³çåæ°å表 (彿°æ¨¡æ¿) | |
| (C++20) |
以使ç¨åé
卿é çææ®µå建ç»ç±»åç对象 (彿°æ¨¡æ¿) |
| 以使ç¨åé
卿é çææ®µå¨æå®çå
åä½ç½®å建ç»å®ç±»åç对象 (彿°æ¨¡æ¿) | |
| (C++11) |
为å¤çº§å®¹å¨å®ç°çå¤çº§åé
å¨ (类模æ¿) |