Missing full stop at the end of the comment.
This will allow users to match on members that don't have identifiers -- is that intentional? If not, my recommendation is to use something like:
if (const IdentifierInfo *II = Node.getMember().getAsIdentifierInfo()) return II->isStr(N); return false;
Either way, we should document and test what the expected behavior is for things like constructors/destructors, overloaded operators, and the likes. (But we don't have to test every kind of odd declaration name.)
Similar concerns here about matching members without identifiers.
I assume this is a const auto & and not a value type? If so, please update the type.
const auto *
!isa<FieldDecl, CXXMethodDecl, VarDecl>(ND)
return ND->getName() != MemberName;