diff --git a/lib/luwra/internal/types.hpp b/lib/luwra/internal/types.hpp index ccce9a4e..9efbf8ed 100644 --- a/lib/luwra/internal/types.hpp +++ b/lib/luwra/internal/types.hpp @@ -67,6 +67,35 @@ template struct CallableInfo: CallableInfo {}; +#if __cplusplus >= 201703L + +// Function pointer +template +struct CallableInfo: + CallableInfo {}; + +// Method pointer +template +struct CallableInfo: + CallableInfo {}; + +// Method pointer on const-qualified this +template +struct CallableInfo: + CallableInfo {}; + +// Method pointer on volatile-qualified this +template +struct CallableInfo: + CallableInfo {}; + +// Method pointer on const-volatile-qualified this +template +struct CallableInfo: + CallableInfo {}; + +#endif + // Remove const qualification template struct CallableInfo: diff --git a/lib/luwra/wrappers.hpp b/lib/luwra/wrappers.hpp index ee885022..070dc47b 100644 --- a/lib/luwra/wrappers.hpp +++ b/lib/luwra/wrappers.hpp @@ -126,6 +126,30 @@ namespace internal { struct MemberWrapper: MethodWrapperImpl::Implementation {}; +#if __cplusplus >= 201703L + + // Wrap methods that expect 'this' to be const-volatile-qualified. + template + struct MemberWrapper: + MethodWrapperImpl::Implementation {}; + + // Wrap methods that expect 'this' to be const-qualified. + template + struct MemberWrapper: + MethodWrapperImpl::Implementation {}; + + // Wrap methods that expect 'this' to be volatile-qualified. + template + struct MemberWrapper: + MethodWrapperImpl::Implementation {}; + + // Wrap methods that expect 'this' to be unqualified. + template + struct MemberWrapper: + MethodWrapperImpl::Implementation {}; + +#endif + // Wrap const-qualified field, provides only the getter. template struct MemberWrapper {