#ifndef FRACTION_HPP #define FRACTION_HPP #include template concept Number = requires(T t, T s) { { t + s } -> std::same_as; { t * s } -> std::same_as; { t - s } -> std::same_as; }; template class Fraction { public: Fraction(const T& num, const T& den) : num_(num), den_(den) {} friend Fraction operator*(const Fraction& lhs, const Fraction& rhs) { return {lhs.num_ * rhs.num_, lhs.den_ * rhs.den_}; } // TODO: other operations and something that can print the fractions T num_, den_; }; #endif // FRACTION_HPP