When an initializer list is used within a marco argument, each comma is the list is treated as a macro argument separator. When this happens, the only error message is "too many macro arguments provided". This patch changes the handling of function-like macros to give additional notes detailing the problems.
For a macro FOO(vector<int>{1,2,3}, 3), it will suggest parenthesis to preserve the initializer list with the corrected code as FOO((vector<int>{1,2,3}), 3).
For a macro such as FOO( {1,2,3} ), it will provide a different note saying that initializer lists cannot be used as macro arguments. This is because adding parentheses around the braces would make it no longer an initializer list.
This is ambiguous, and could be read as "braced lists require that parentheses are recognized inside macros". Maybe "parentheses are required around macro argument containing braced initializer list"?