diff options
Diffstat (limited to 'dev/kernel/NewKit/Function.h')
| -rw-r--r-- | dev/kernel/NewKit/Function.h | 83 |
1 files changed, 35 insertions, 48 deletions
diff --git a/dev/kernel/NewKit/Function.h b/dev/kernel/NewKit/Function.h index 9fa218af..e0af5842 100644 --- a/dev/kernel/NewKit/Function.h +++ b/dev/kernel/NewKit/Function.h @@ -3,51 +3,38 @@ #include <NewKit/Defines.h> -namespace Kernel -{ - template <typename T, typename... Args> - class Function final - { - public: - Function() = default; - - public: - explicit Function(T (*Fn)(Args... args)) - : fFn(Fn) - { - } - - ~Function() = default; - - Function& operator=(const Function&) = default; - Function(const Function&) = default; - - template <typename... XArgs> - T operator()(Args... args) - { - return fFn(args...); - } - - template <typename... XArgs> - T Call(Args... args) - { - return fFn(args...); - } - - operator bool() - { - return fFn; - } - - bool operator!() - { - return !fFn; - } - - private: - T(*fFn) - (Args... args); - }; -} // namespace Kernel - -#endif // !_INC_FUNCTION_H__ +namespace Kernel { +template <typename T, typename... Args> +class Function final { + public: + Function() = default; + + public: + explicit Function(T (*Fn)(Args... args)) : fFn(Fn) {} + + ~Function() = default; + + Function& operator=(const Function&) = default; + Function(const Function&) = default; + + template <typename... XArgs> + T operator()(Args... args) { + return fFn(args...); + } + + template <typename... XArgs> + T Call(Args... args) { + return fFn(args...); + } + + operator bool() { return fFn; } + + bool operator!() { return !fFn; } + + private: + T(*fFn) + (Args... args); +}; +} // namespace Kernel + +#endif // !_INC_FUNCTION_H__ |
