为何C++容器比较运算符不具备分配器无关性?
C++容器比较运算符为何要求分配器类型匹配?
C++标准容器(例如std::vector)的比较运算符要求左右操作数的分配器类型必须一致。但从直观逻辑出发,容器比较只需要对比大小和元素内容即可,元素的内存来源(分配器)不该影响比较结果。
这种设计是存在深层技术原因,还是仅仅因为这类跨分配器比较的场景未被纳入考虑范围?
- 预期行为:以
std::vector为例,比较运算符应支持不同分配器的容器,比如左侧使用std::allocator<int>、右侧使用std::pmr::polymorphic_allocator<int>的容器可以直接进行比较。 - 实际行为:
std::vector的比较运算符仅在左右操作数的分配器类型相同时才会被声明。
内容的提问来源于stack exchange,提问作者Arne Vogel
相关产品推荐
相关产品推荐

