mirror of
https://github.com/geode-sdk/geode.git
synced 2025-03-23 03:15:58 -04:00
Fix recursive ctor in minifunction
This commit is contained in:
parent
c35ba2e6c5
commit
db109bfdf2
1 changed files with 7 additions and 4 deletions
|
@ -31,6 +31,11 @@ namespace geode::utils {
|
|||
return new MiniFunctionState(*this);
|
||||
}
|
||||
};
|
||||
|
||||
template <class Callable, class Ret, class... Args>
|
||||
concept MiniFunctionCallable = requires(Callable&& func, Args... args) {
|
||||
{ func(args...) } -> std::same_as<Ret>;
|
||||
};
|
||||
|
||||
template <class Ret, class... Args>
|
||||
class MiniFunction<Ret(Args...)> {
|
||||
|
@ -56,9 +61,7 @@ namespace geode::utils {
|
|||
}
|
||||
|
||||
template <class Callable>
|
||||
requires requires(Callable&& func, Args... args) {
|
||||
{ func(args...) } -> std::same_as<Ret>;
|
||||
}
|
||||
requires(MiniFunctionCallable<Callable, Ret, Args...> && !std::is_same_v<Callable, MiniFunction<Ret, Args...>>)
|
||||
MiniFunction(Callable&& func) :
|
||||
m_state(new MiniFunctionState<std::decay_t<Callable>, Ret, Args...>(std::forward<Callable>(func))) {}
|
||||
|
||||
|
@ -83,4 +86,4 @@ namespace geode::utils {
|
|||
return m_state;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue