diff options
| -rw-r--r-- | src/DI/container.hpp | 2 | ||||
| -rw-r--r-- | src/DI/function_wrapper.hpp | 2 | ||||
| -rw-r--r-- | src/DI/function_wrapper.tpp | 5 | ||||
| -rw-r--r-- | src/DI/type_traits.hpp | 4 | ||||
| -rw-r--r-- | src/interfaces/bounds.hpp | 4 | ||||
| -rw-r--r-- | src/interfaces/matrix.hpp | 4 | ||||
| -rw-r--r-- | src/interfaces/randomization.hpp | 5 | ||||
| -rw-r--r-- | src/interfaces/vector2.hpp | 4 | 
8 files changed, 14 insertions, 16 deletions
diff --git a/src/DI/container.hpp b/src/DI/container.hpp index 2dd194f..93722b6 100644 --- a/src/DI/container.hpp +++ b/src/DI/container.hpp @@ -34,7 +34,7 @@ public:  	template <class Interface>  	BindingBuilder<Interface> bind(); -	template <class Interface, class = std::enable_if_t<std::is_abstract_v<Interface>>> +	template <class Interface, class = std::enable_if_t<std::is_class_v<Interface>>>  	std::shared_ptr<Interface> get() const;  	template <typename Interface, typename = std::enable_if_t<is_func_v<Interface>>> diff --git a/src/DI/function_wrapper.hpp b/src/DI/function_wrapper.hpp index e4b6779..716668c 100644 --- a/src/DI/function_wrapper.hpp +++ b/src/DI/function_wrapper.hpp @@ -9,7 +9,7 @@ template <class Interface>  class FunctionWrapper : public IWrapper<Interface>  {  public: -	explicit FunctionWrapper(Interface func) : _func(func) {} +	explicit FunctionWrapper(Interface func) noexcept;  	[[nodiscard]] Interface get() const; diff --git a/src/DI/function_wrapper.tpp b/src/DI/function_wrapper.tpp index 4e09957..920c7f2 100644 --- a/src/DI/function_wrapper.tpp +++ b/src/DI/function_wrapper.tpp @@ -3,6 +3,11 @@  #include "function_wrapper.hpp"  template <class Interface> +FunctionWrapper<Interface>::FunctionWrapper(Interface func) noexcept : _func(func) +{ +} + +template <class Interface>  Interface FunctionWrapper<Interface>::get() const  {  	return _func; diff --git a/src/DI/type_traits.hpp b/src/DI/type_traits.hpp index a852a4f..e4b6640 100644 --- a/src/DI/type_traits.hpp +++ b/src/DI/type_traits.hpp @@ -1,6 +1,6 @@  #pragma once -#include <functional> +#include <type_traits>  template <typename NotAFunc>  struct is_func : public std::false_type // NOLINT(readability-identifier-naming) @@ -8,7 +8,7 @@ struct is_func : public std::false_type // NOLINT(readability-identifier-naming)  };  template <typename Return, typename... Args> -struct is_func<std::function<Return(Args...)>> : public std::true_type +struct is_func<Return (*)(Args...)> : public std::true_type  {  }; diff --git a/src/interfaces/bounds.hpp b/src/interfaces/bounds.hpp index 7e920cf..b431874 100644 --- a/src/interfaces/bounds.hpp +++ b/src/interfaces/bounds.hpp @@ -2,7 +2,6 @@  #include "interfaces/vector2.hpp" -#include <functional>  #include <memory>  enum CoordsValidation @@ -39,5 +38,4 @@ struct IBoundsOptions  	unsigned int height;  }; -using IBoundsFactory = -	std::function<std::shared_ptr<IBounds>(const IBoundsOptions &options)>; +using IBoundsFactory = std::shared_ptr<IBounds> (*)(const IBoundsOptions &options); diff --git a/src/interfaces/matrix.hpp b/src/interfaces/matrix.hpp index ab5f40b..72d18d9 100644 --- a/src/interfaces/matrix.hpp +++ b/src/interfaces/matrix.hpp @@ -3,7 +3,6 @@  #include "interfaces/bounds.hpp"  #include "interfaces/vector2.hpp" -#include <functional>  #include <memory>  template <typename Element> @@ -46,5 +45,4 @@ public:  };  template <typename Element> -using IMatrixFactory = -	std::function<std::shared_ptr<IMatrix<Element>>(const IBounds &bounds)>; +using IMatrixFactory = std::shared_ptr<IMatrix<Element>> (*)(const IBounds &bounds); diff --git a/src/interfaces/randomization.hpp b/src/interfaces/randomization.hpp index 9eeec0a..12f6486 100644 --- a/src/interfaces/randomization.hpp +++ b/src/interfaces/randomization.hpp @@ -1,6 +1,5 @@  #pragma once -#include <functional>  #include <memory>  class ISeedGenerator @@ -11,7 +10,7 @@ public:  	[[nodiscard]] virtual unsigned int random_seed() const = 0;  }; -using ISeedGeneratorFactory = std::function<std::shared_ptr<ISeedGenerator>()>; +using ISeedGeneratorFactory = std::shared_ptr<ISeedGenerator> (*)();  /**   * Pseudo-random unsigned integer generator. @@ -32,4 +31,4 @@ public:  };  using IRandomNumberGeneratorFactory = -	std::function<std::shared_ptr<IRandomNumberGenerator>(const unsigned int &seed)>; +	std::shared_ptr<IRandomNumberGenerator> (*)(const unsigned int &seed); diff --git a/src/interfaces/vector2.hpp b/src/interfaces/vector2.hpp index 569dc30..dfd369f 100644 --- a/src/interfaces/vector2.hpp +++ b/src/interfaces/vector2.hpp @@ -1,6 +1,5 @@  #pragma once -#include <functional>  #include <memory>  class IVector2 @@ -42,5 +41,4 @@ struct IVector2Options  	unsigned int y;  }; -using IVector2Factory = -	std::function<std::shared_ptr<IVector2>(const IVector2Options &options)>; +using IVector2Factory = std::shared_ptr<IVector2> (*)(const IVector2Options &options);  | 
