// Copyright (C) 2020 Jérôme Leclercq // This file is part of the "Nazara Engine - Core module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_MOVABLE_VALUE_HPP #define NAZARA_MOVABLE_VALUE_HPP namespace Nz { template class MovableValue { public: MovableValue(T value = T{}); MovableValue(const MovableValue&) = default; MovableValue(MovableValue&& ptr) noexcept; ~MovableValue() = default; T& Get(); const T& Get() const; operator T&(); operator const T&() const; MovableValue& operator=(T value); MovableValue& operator=(const MovableValue&) = default; MovableValue& operator=(MovableValue&& ptr) noexcept; private: T m_value; }; } #include #endif // NAZARA_MOVABLE_VALUE_HPP