Mercurial > minori
view dep/toml11/toml/storage.hpp @ 327:b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
ToLocalString has also been altered to take in both season
and year because lots of locales actually treat formatting
seasons differently! most notably is Russian which adds a
suffix at the end to notate seasons(??)
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Thu, 13 Jun 2024 01:49:18 -0400 |
parents | 3b355fa948c7 |
children |
line wrap: on
line source
// Copyright Toru Niina 2017. // Distributed under the MIT License. #ifndef TOML11_STORAGE_HPP #define TOML11_STORAGE_HPP #include "utility.hpp" namespace toml { namespace detail { // this contains pointer and deep-copy the content if copied. // to avoid recursive pointer. template<typename T> struct storage { using value_type = T; explicit storage(value_type const& v): ptr(toml::make_unique<T>(v)) {} explicit storage(value_type&& v): ptr(toml::make_unique<T>(std::move(v))) {} ~storage() = default; storage(const storage& rhs): ptr(toml::make_unique<T>(*rhs.ptr)) {} storage& operator=(const storage& rhs) { this->ptr = toml::make_unique<T>(*rhs.ptr); return *this; } storage(storage&&) = default; storage& operator=(storage&&) = default; bool is_ok() const noexcept {return static_cast<bool>(ptr);} value_type& value() & noexcept {return *ptr;} value_type const& value() const& noexcept {return *ptr;} value_type&& value() && noexcept {return std::move(*ptr);} private: std::unique_ptr<value_type> ptr; }; } // detail } // toml #endif// TOML11_STORAGE_HPP