C++ 为什么没有std::uses_分配器<;标准::可选>;?
对于std::variant,有一个专门的uses\u分配器,但对于std::optional,则没有。为什么?来自: 不允许实现使用附加存储(如动态内存)来分配其包含的值 因此,不需要分配器 尽管对于变体也是如此: 不允许实现使用额外的存储(如动态内存)来分配包含的值 显然,C++ 为什么没有std::uses_分配器<;标准::可选>;?,c++,allocator,C++,Allocator,对于std::variant,有一个专门的uses\u分配器,但对于std::optional,则没有。为什么?来自: 不允许实现使用附加存储(如动态内存)来分配其包含的值 因此,不需要分配器 尽管对于变体也是如此: 不允许实现使用额外的存储(如动态内存)来分配包含的值 显然,为std::variant(HT:@K-ballo!)使用了_分配器专门化 因为 如果可选项包含值,则该值保证为 作为可选对象示意图的一部分分配,即无动态 内存分配从未发生过。因此,可选对象为 对象,而不是指针,即使运算符
为std::variant
(HT:@K-ballo!)使用了_分配器专门化 因为
如果可选项包含值,则该值保证为
作为可选对象示意图的一部分分配,即无动态
内存分配从未发生过。因此,可选对象为
对象,而不是指针,即使运算符*()和运算符->()
定义了
另一方面,std::variant
在标准的早期版本中用于支持分配器,因此我觉得这种专门化是当时的遗留问题。variant也不分配内存。@draganm17我有一种不受支持的感觉,认为这是由于variants的原始实现造成的,而variants确实是这样。