/* * @Author: DI JUNKUN * @Date: 2025-01-14 * Copyright (c) 2025 by DI JUNKUN, All Rights Reserved. */ #ifndef _CONSTRAIN_H_ #define _CONSTRAIN_H_ #include #include template class Constrained { public: Constrained(T default_value, std::optional lower_limit, std::optional upper_limit) : value_(default_value), lower_limit_(lower_limit), upper_limit_(upper_limit) {} T Get() const { return value_; } operator T() const { return Get(); } const T* operator->() const { return &value_; } private: T value_; std::optional lower_limit_; std::optional upper_limit_; }; #endif