added some comments to explain the code
This commit is contained in:
parent
a037369c39
commit
4756e53292
@ -3,15 +3,15 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
template <typename Fun>
|
template <typename Fun> // here Fun will be a function signature
|
||||||
class Function;
|
class Function;
|
||||||
|
|
||||||
|
|
||||||
template <typename Ret, typename... Args>
|
template <typename Ret, typename... Args> // specialization, so we can work
|
||||||
class Function<Ret(Args...)>
|
class Function<Ret(Args...)>
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
class callable_base
|
class callable_base // type-erasure magic for functors
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual Ret call(Args...) const = 0;
|
virtual Ret call(Args...) const = 0;
|
||||||
@ -52,7 +52,7 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Function& operator=(std::nullptr_t)
|
Function& operator=(std::nullptr_t) // exploiting that decltype(nullptr) is std::nullptr_t
|
||||||
{ _is_null = true; }
|
{ _is_null = true; }
|
||||||
|
|
||||||
Ret operator()(Args... args) const
|
Ret operator()(Args... args) const
|
||||||
|
Loading…
Reference in New Issue
Block a user