jonathanmeier added a comment.

With non-type template parameters we can have expressions inside template 
arguments, including comparison operators like `<`, `<=`, `>` and `>=`, which 
lets us write typedefs like this:

  template <bool B>
  struct S {};
  
  typedef S<(0 < 0)> S_t, *S_p;

Unfortunately, for this example your patch breaks the check in the `tok::comma` 
case, which should abort the removal when there are multiple declarations in 
the declaration chain. It thinks the comma is still part of the template 
argument, since it expects a matching end template angle bracket for the less 
than operator which was erroneously interpreted as the start of a template 
argument.

With the `-fix` option, clang-tidy produces the following invalid using 
declaration for the example above:

  using S_t = S<(0 < 0)>, *S_p;


Repository:
  rCTE Clang Tools Extra

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67460/new/

https://reviews.llvm.org/D67460



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to