From 92235fb259b0ebdfc99859c2c95fe1f8c163f411 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Tue, 8 Nov 2016 20:09:05 -0500 Subject: trying out distortos --- include/estd/ReferenceHolder.hpp | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 include/estd/ReferenceHolder.hpp (limited to 'include/estd/ReferenceHolder.hpp') diff --git a/include/estd/ReferenceHolder.hpp b/include/estd/ReferenceHolder.hpp new file mode 100644 index 0000000..2bb4602 --- /dev/null +++ b/include/estd/ReferenceHolder.hpp @@ -0,0 +1,61 @@ +/** + * \file + * \brief ReferenceHolder template class header. + * + * \author Copyright (C) 2014-2016 Kamil Szczygiel http://www.distortec.com http://www.freddiechopin.info + * + * \par License + * 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/. + */ + +#ifndef ESTD_REFERENCEHOLDER_HPP_ +#define ESTD_REFERENCEHOLDER_HPP_ + +namespace estd +{ + +/** + * \brief ReferenceHolder template class is a ROMable holder of a reference. + * + * \tparam T is the type of reference held in the object + */ + +template +class ReferenceHolder +{ +public: + + /** + * \brief ReferenceHolder constructor. + * + * \param [in] reference is a reference that will be held by the object + */ + + constexpr explicit ReferenceHolder(T& reference) noexcept : + reference_{reference} + { + + } + + /// \return reference held by the object + constexpr operator T&() const noexcept + { + return reference_; + } + + /// \return reference held by the object + constexpr T& get() const noexcept + { + return reference_; + } + +private: + + /// reference held by the object + T& reference_; +}; + +} // namespace estd + +#endif // ESTD_REFERENCEHOLDER_HPP_ -- cgit v1.2.3