Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么std::allocator\u traits没有函数`address`_C++_C++11_Allocator - Fatal编程技术网

C++ 为什么std::allocator\u traits没有函数`address`

C++ 为什么std::allocator\u traits没有函数`address`,c++,c++11,allocator,C++,C++11,Allocator,分配器有分配、取消分配、构造、销毁和最大大小,但没有地址 为什么不呢? 如果总是使用std::addressof是安全的,为什么std::分配器支持address? std::allocator::address是std::allocator的一部分,因为该类型在标准中已经存在,但在C++17中被弃用,在C++20中被删除。分配器_traits是由添加到C++11的。该文件从分配器要求中删除了地址,并声明: 地址的功能现在由pointer\u提供给pointer\u中的函数 addressof是

分配器有分配、取消分配、构造、销毁和最大大小,但没有地址

为什么不呢? 如果总是使用std::addressof是安全的,为什么std::分配器支持address? std::allocator::address是std::allocator的一部分,因为该类型在标准中已经存在,但在C++17中被弃用,在C++20中被删除。分配器_traits是由添加到C++11的。该文件从分配器要求中删除了地址,并声明:

地址的功能现在由pointer\u提供给pointer\u中的函数


addressof是C++11。分配器的地址是C++03,并保持兼容;您能澄清一下您想问的是什么吗?@FilipRoséen refp:我的假设是,custom_allocator::address的存在是为了支持一个分配器,而该分配器的存储实际上不受内存的支持,这就是为什么指针存在而不仅仅使用值_type*。如果这不是真的,std::allocator::address似乎毫无意义。@David:没有。它支持16位时代的奇特指针,当时你有近指针和远指针。您需要知道它是value\u type*还是value\u type FAR*。