Took another look at this with beta4.
The results are correct within reason. There are three overloads in the source code:
/* 1 */ unsigned char my_namespace::function1( another_namespace::types::SomeType some_type, bool someBooleanArg=false );
/* 2 */ unsigned char my_namespace::function1( another_namesapce::types::SomeType some_type, bool someBoolArg) {}
/* 3 */ unsigned char my_namespace::function1( another_namespace::types::SomeType some_type) {}
- prototype matches because second argument takes default
- function does not match because call only has one argument
- function with one argument matches exactly
So, it narrows the list down to one prototype and one function, and your preferences are to navigate to the function definition first, so it goes directly to the function. Hit Ctrl+. again, it will cycle to the first prototype.
Case 2 could be smarter, matching the function definition to its corresponding prototype to try to determine which arguments could take defaults. That's a lot of work. I'll see what can be done.