Closed iboB closed 6 years ago
The workaround for now is to add using a::foo;
in b
's public section, so that &b::foo
has the correct type
This was fixed in 1.3.1 along with the constness overload fix
This cannot be properly fixed for clang until https://bugs.llvm.org/show_bug.cgi?id=35971 is fixed
After the discussion in the bug report it seems that it's a standard issue. There is simply no way to fix this by casting before c++17.
To make a proper implementation a metafunction needs to extract the appropriate parent from the method name, instantiate msg_caller::caller
appropriately (by adding a Parent
type as a template argument) and performing the cast inside.
Will work on this next
Closing as there is a workaround and this cannot be fixed with c++11. Comments are added to fix properly when we switch to c++17.
The problem is basically this:
The
caller
in the message macros gets instantiated with as<Mixin, Ret, Ret (PARENT::&Method)(args)>
and cannot be implicitly cast to<Mixin, Ret, Ret (Mixin::&Method)(args)>
.An explicit cast needs to be added in
get_caller_for