Highlight matching is intended to show what delimited block the cursor currently resides in. In the following code snip, I think the wrong symbols are highlighted.
int a,b,c,d,e;
if( a < e
|| b < e // Highlights '<' '>' symbols instead of outer if() brackets
|| c >= (e + 1) // Ok if inside these brackets
|| d >= e
)
{
}
When the cursor is inside that 'if' statement, the '<' and '>' symbols are often highlighted (as if they were template syntax perhaps?) instead of the outer '()' for the 'if'.