poly: minor changes

This commit is contained in:
Michele Caini
2020-12-30 17:18:43 +01:00
parent d2489a57b7
commit 9f5433053d

View File

@@ -79,13 +79,15 @@ class poly_vtable {
template<typename Type, auto Candidate, typename Ret, typename Any, typename... Args>
static void fill_vtable_entry(Ret(* &entry)(Any &, Args...)) {
entry = +[]([[maybe_unused]] Any &any, Args... args) -> Ret {
if constexpr(std::is_invocable_r_v<Ret, decltype(Candidate), Args...>) {
if constexpr(std::is_invocable_r_v<Ret, decltype(Candidate), Args...>) {
entry = +[](Any &, Args... args) -> Ret {
return std::invoke(Candidate, std::forward<Args>(args)...);
} else {
};
} else {
entry = +[](Any &any, Args... args) -> Ret {
return std::invoke(Candidate, any_cast<constness_as_t<Type, Any> &>(any), std::forward<Args>(args)...);
}
};
};
}
}
template<typename Type, auto... Index>