#ifndef CALCULATOR_CHALLENGE_BINARYOPERATORFACTORY_HPP #define CALCULATOR_CHALLENGE_BINARYOPERATORFACTORY_HPP #include #include #include #include #include "Operand.hpp" template class BinaryOperatorFactory { using Operator = BinaryOperatorType; public: BinaryOperatorFactory() noexcept; BinaryOperatorFactory(const BinaryOperatorFactory&) noexcept = delete; BinaryOperatorFactory(BinaryOperatorFactory&&) noexcept = delete; auto operator=(const BinaryOperatorFactory&) noexcept -> BinaryOperatorFactory& = delete; auto operator=(BinaryOperatorFactory&&) noexcept -> BinaryOperatorFactory& = delete; ~BinaryOperatorFactory() noexcept = default; auto make(std::string_view text) noexcept -> std::optional; private: std::unordered_map _binary_operations; }; #include "BinaryOperatorFactory.tcc" #endif