Avoid using standard concepts
Turns out those are unimplemented in clang < 13, use custom code instead.
This commit is contained in:
parent
e49b99e269
commit
4122b64ecd
|
@ -4,7 +4,6 @@
|
||||||
#include "assert.hh"
|
#include "assert.hh"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <concepts>
|
|
||||||
|
|
||||||
namespace Kakoune
|
namespace Kakoune
|
||||||
{
|
{
|
||||||
|
@ -175,10 +174,9 @@ public:
|
||||||
{}
|
{}
|
||||||
|
|
||||||
template<typename Target>
|
template<typename Target>
|
||||||
requires requires (Target t, Args... a) {
|
requires (not std::is_same_v<FunctionRef, std::remove_cvref_t<Target>> and
|
||||||
requires not std::is_same_v<FunctionRef, std::remove_cvref_t<Target>>;
|
(std::is_void_v<Res> or
|
||||||
{ t(a...) } -> std::convertible_to<Res>;
|
requires (Target t, Args... a, void(&func)(Res)) { func(t(a...)); }))
|
||||||
}
|
|
||||||
FunctionRef(Target&& target)
|
FunctionRef(Target&& target)
|
||||||
: m_target{&target},
|
: m_target{&target},
|
||||||
m_invoker{[](void* target, Args... args) {
|
m_invoker{[](void* target, Args... args) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user