From 8a1a73fcb28a548b5d3266ab45f236b9033c39ba Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 11 May 2020 14:33:26 +0000 Subject: Implemtent equality operator. --- vespalib/src/vespa/vespalib/stllike/allocator.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'vespalib') diff --git a/vespalib/src/vespa/vespalib/stllike/allocator.h b/vespalib/src/vespa/vespalib/stllike/allocator.h index 3aaa05a7d8f..3d8c2f03154 100644 --- a/vespalib/src/vespa/vespalib/stllike/allocator.h +++ b/vespalib/src/vespa/vespalib/stllike/allocator.h @@ -2,6 +2,8 @@ #pragma once +#include + namespace vespalib { /** @@ -13,16 +15,22 @@ template class allocator_large { using PtrAndSize = alloc::MemoryAllocator::PtrAndSize; public: - allocator_large() : _allocator(alloc::MemoryAllocator::select_allocator()) {} + allocator_large() noexcept : _allocator(alloc::MemoryAllocator::select_allocator()) {} using value_type = T; - T * allocate(std::size_t n) { + constexpr T * allocate(std::size_t n) { return static_cast(_allocator->alloc(n*sizeof(T)).first); } void deallocate(T * p, std::size_t n) { _allocator->free(p, n*sizeof(T)); } + alloc::MemoryAllocator * allocator() const { return _allocator; } private: const alloc::MemoryAllocator * _allocator; }; +template< class T1, class T2 > +constexpr bool operator==( const allocator_large& lhs, const allocator_large& rhs ) noexcept { + return lhs.allocator() == rhs.allocator(); +} + } -- cgit v1.2.3