为 STL 分配器实现 select_on_container_copy_construction()
Implement select_on_container_copy_construction() for STL Allocator
我想提供一个自定义
select_on_container_copy_construction()
http://www.cplusplus.com/reference/memory/allocator_traits/select_on_container_copy_construction/
我的分配器。
我试图将它直接添加到我的分配器 class 中,如下所示:
T select_on_container_copy_construction( const T& a ) const {
...
}
但是没有调用。
我尝试将其实现为类型特征:
namespace std {
template<class T>
struct allocator_traits<static_allocator<T>> {
typedef T value_type;
};
}
但现在我还必须实现所有其他特征功能。
是否有更简单的方法来覆盖此函数而无需提供完整的 allocator_traits
?
完整代码示例可在此处找到:
https://onlinegdb.com/H1iJJIN1N
我尝试了各种变体,将 static/const 添加到函数中。
Allocator 命名要求 [allocator.requirements] 假定以下调用语法:
a.select_on_container_copy_construction()
并期望 return 类型是分配器类型。
您声明了一个附加参数 (const T& a
),这使得上述调用格式错误,迫使 std::allocator_traits
回退到默认实现(returning 分配器实例) [allocator.traits]:
static Alloc select_on_container_copy_construction(const Alloc& rhs);
Returns: rhs.select_on_container_copy_construction()
if that expression is well-formed; otherwise, rhs
.
我想提供一个自定义
select_on_container_copy_construction()
http://www.cplusplus.com/reference/memory/allocator_traits/select_on_container_copy_construction/
我的分配器。
我试图将它直接添加到我的分配器 class 中,如下所示:
T select_on_container_copy_construction( const T& a ) const {
...
}
但是没有调用。
我尝试将其实现为类型特征:
namespace std {
template<class T>
struct allocator_traits<static_allocator<T>> {
typedef T value_type;
};
}
但现在我还必须实现所有其他特征功能。
是否有更简单的方法来覆盖此函数而无需提供完整的 allocator_traits
?
完整代码示例可在此处找到: https://onlinegdb.com/H1iJJIN1N
我尝试了各种变体,将 static/const 添加到函数中。
Allocator 命名要求 [allocator.requirements] 假定以下调用语法:
a.select_on_container_copy_construction()
并期望 return 类型是分配器类型。
您声明了一个附加参数 (const T& a
),这使得上述调用格式错误,迫使 std::allocator_traits
回退到默认实现(returning 分配器实例) [allocator.traits]:
static Alloc select_on_container_copy_construction(const Alloc& rhs);
Returns:
rhs.select_on_container_copy_construction()
if that expression is well-formed; otherwise,rhs
.