feat: enhance timer

This commit is contained in:
Katharina 2026-07-02 23:07:16 +02:00
parent 43c87e5904
commit 54d48e7d91
5 changed files with 133 additions and 8 deletions

View file

@ -23,3 +23,10 @@ auto construct() {
return Type{forward<decltype(args)>(args)...};
};
}
template<typename V>
auto constant(V v) {
return [v](auto _) {
return v;
};
}

View file

@ -183,3 +183,24 @@ public:
}
}
};
template<typename T>
struct as_optional {
using type = optional<T>;
};
template<typename T>
struct as_optional<optional<T>> {
using type = optional<T>;
};
template<typename T>
using as_optional_t = typename as_optional<T>::type;
template<typename Func>
auto lift(Func func) {
return [func](const auto&... optionals) -> as_optional_t<decltype(func(optionals.value()...))> {
if ((optionals.has_value() && ...)) {
return func(optionals.value()...);
}
return nullopt;
};
}