-
Notifications
You must be signed in to change notification settings - Fork 56
Description
Description of new feature
I've found that BestOverloadFunctionMatch doesn't select any member function if one is const. It also doesn't support overloading based on & or &&.
struct bar
{
int foo(int i)
{
return i;
}
int foo(int i) const
{
return i + 1;
}
};If the second foo is commented out, I can match the first member fn and call it no problem. But when both are present, neither matches.
This also brings up the important point that BestOverloadFunctionMatch doesn't take into account the constness or the value category of the invoking object. So matching const member fns or matching & or && member fns cannot be done without specifying more information to overload resolution.
I think we should be able to solve this by having the invoking object as the first argument and then resolve on that. Right now, BestOverloadFunctionMatch actually expects that it's not present. So, in my example above, the only argument would be one int.
If instead we need to provide a bar const& and int then we can match the overload on constness and value category of the invoking object.
@Vipul-Cariappa for vis.