首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STL分配器的select_on_container_copy_construction()实现

STL分配器的select_on_container_copy_construction()实现
EN

Stack Overflow用户
提问于 2018-12-04 18:38:25
回答 1查看 200关注 0票数 0

我想提供一个习俗

代码语言:javascript
复制
select_on_container_copy_construction()

建造/

给我的分配器。

我试图将它直接添加到我的分配器类中,如下所示:

代码语言:javascript
复制
T select_on_container_copy_construction( const T& a ) const {
  ...
}

但这不是所谓的。

我试着把它作为一个类型特性来实现:

代码语言:javascript
复制
namespace std {
  template<class T>
  struct allocator_traits<static_allocator<T>> {
    typedef T value_type;
  };
}

但是现在我也必须实现所有其他的特性特性。

是否有更简单的方法只需覆盖此函数而不必提供完整的allocator_traits

完整的代码示例可以在这里找到:https://onlinegdb.com/H1iJJIN1N

在向函数添加静态/const时,我尝试了各种变体。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 19:17:14

名为requirement [allocator.requirements]的分配器采用以下调用语法:

代码语言:javascript
复制
a.select_on_container_copy_construction()

并期望返回类型是分配器类型。

您声明了一个附加参数(const T& a),它使上述调用格式不正确,迫使std::allocator_traits返回到dafault实现(返回分配器实例) [allocator.traits]

静态同种异体select_on_container_copy_construction(const & rhs); 返回:如果表达式格式良好,则为rhs.select_on_container_copy_construction();否则为rhs

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53619450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档