/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Copyright 2018 Danny Robson */ #ifndef CRUFT_UTIL_ALLOC_FORWARDING_HPP #define CRUFT_UTIL_ALLOC_FORWARDING_HPP #include namespace cruft::alloc { template class forwarding { public: explicit forwarding (BackingT &backing): m_backing (backing) { ; } template auto allocate (Args &&...args) { return m_backing.template allocate (std::forward (args)...); } template auto deallocate (Args &&...args) { return m_backing.template deallocate (std::forward (args)...); } auto data (void) { return m_backing.data (); } auto begin (void) { return m_backing.begin (); } auto end (void) { return m_backing.end (); } auto data (void) const { return m_backing.data (); } auto begin (void) const { return m_backing.begin (); } auto end (void) const { return m_backing.end (); } auto capacity (void) const { return m_backing.capacity (); } auto used (void) const { return m_backing.used (); } auto remain (void) const { return m_backing.remain (); } private: BackingT &m_backing; }; }; #endif