#ifndef BOOK_COUNT_HH #define BOOK_COUNT_HH #include namespace book_store::product { class book_count { public: using book_count_type = std::size_t; private: book_count_type _count; public: book_count() = default; book_count(book_count_type count) : _count(count) {} [[nodiscard]] auto value() const noexcept -> book_count_type; friend auto operator<<(std::ostream &output_stream, const book_count &price) -> std::ostream & { output_stream << price._count; return output_stream; } friend auto operator==(const book_count &lhs, const book_count &rhs) -> bool { return lhs._count == rhs._count; } friend auto operator+(const book_count &lhs, const book_count &rhs) -> book_count { return {lhs._count + rhs._count}; } friend auto operator<(const book_count &lhs, const book_count &rhs) -> bool { return lhs._count < rhs._count; } friend auto operator-(const book_count &lhs, const book_count &rhs) -> book_count { return {lhs._count - rhs._count}; } friend auto operator%(const book_count &lhs, const book_count &rhs) -> book_count { return {lhs._count % rhs._count}; } friend auto operator*(const book_count &lhs, const book_count &rhs) -> book_count { return {lhs._count * rhs._count}; } }; } // namespace book_store::product #endif // BOOK_COUNT_HH