<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Feb 16, 2015 at 3:08 AM, Benjamin Kramer <span dir="ltr"><<a href="mailto:benny.kra@googlemail.com" target="_blank">benny.kra@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: d0k<br>
Date: Mon Feb 16 05:08:00 2015<br>
New Revision: 229374<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=229374&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=229374&view=rev</a><br>
Log:<br>
ASTMatchers: Replace enable_if with static_assert.<br>
<br>
This is nicer in general and gives a better error message, but it also might<br>
bring MSVC 2013 back to life.<br>
<br>
Modified:<br>
    cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h<br>
<br>
Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h?rev=229374&r1=229373&r2=229374&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h?rev=229374&r1=229373&r2=229374&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h (original)<br>
+++ cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h Mon Feb 16 05:08:00 2015<br>
@@ -1178,14 +1178,10 @@ template <unsigned MinCount, unsigned Ma<br>
 struct VariadicOperatorMatcherFunc {<br>
   DynTypedMatcher::VariadicOperator Op;<br>
<br>
-  template <unsigned Count, typename T><br>
-  struct EnableIfValidArity<br>
-      : public std::enable_if<MinCount <= Count && Count <= MaxCount, T> {};<br>
-<br>
   template <typename... Ms><br>
-  typename EnableIfValidArity<sizeof...(Ms),<br>
-                              VariadicOperatorMatcher<Ms...>>::type<br>
-  operator()(Ms &&... Ps) const {<br>
+  VariadicOperatorMatcher<Ms...> operator()(Ms &&... Ps) const {<br></blockquote><div><br></div><div>Why the space after the '...'? That seems to be in conflict with the usual LLVM style.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+    static_assert(MinCount <= sizeof...(Ms) && sizeof...(Ms) <= MaxCount,<br>
+                  "invalid number of parameters for variadic matcher");<br>
     return VariadicOperatorMatcher<Ms...>(Op, std::forward<Ms>(Ps)...);<br>
   }<br>
 };<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div></div>