Commit 0fd76d8e by Paolo Carlini Committed by Paolo Carlini

future (_Result_alloc): Derive from _Alloc, exploit the Empty Base Optimization.

2010-10-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/std/future (_Result_alloc): Derive from _Alloc,
	exploit the Empty Base Optimization.

From-SVN: r165194
parent bd39cb52
2010-10-08 Paolo Carlini <paolo.carlini@oracle.com>
* include/std/future (_Result_alloc): Derive from _Alloc,
exploit the Empty Base Optimization.
2010-10-08 Jonathan Wakely <jwakely.gcc@gmail.com> 2010-10-08 Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/45403 PR libstdc++/45403
......
...@@ -215,24 +215,22 @@ namespace std ...@@ -215,24 +215,22 @@ namespace std
/// Result_alloc. /// Result_alloc.
template<typename _Res, typename _Alloc> template<typename _Res, typename _Alloc>
struct _Result_alloc : _Result<_Res> struct _Result_alloc : _Result<_Res>, _Alloc
{ {
typedef typename _Alloc::template rebind<_Result_alloc>::other typedef typename _Alloc::template rebind<_Result_alloc>::other
__allocator_type; __allocator_type;
explicit explicit
_Result_alloc(const _Alloc& __a) : _Result<_Res>(), _M_alloc(__a) _Result_alloc(const _Alloc& __a) : _Result<_Res>(), _Alloc(__a)
{ } { }
private: private:
void _M_destroy() void _M_destroy()
{ {
__allocator_type __a(_M_alloc); __allocator_type __a(*this);
__a.destroy(this); __a.destroy(this);
__a.deallocate(this, 1); __a.deallocate(this, 1);
} }
__allocator_type _M_alloc;
}; };
template<typename _Res, typename _Allocator> template<typename _Res, typename _Allocator>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment