<HTML><HEAD><TITLE>Samsung Enterprise Portal mySingle</TITLE>
<META content=IE=5 http-equiv=X-UA-Compatible>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<STYLE id=mysingle_style type=text/css>P {
        MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
}
TD {
        MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
}
LI {
        MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
}
BODY {
        FONT-SIZE: 9pt; FONT-FAMILY: Arial, arial; MARGIN: 10px; LINE-HEIGHT: 1.4
}
</STYLE>

<META name=GENERATOR content=ActiveSquare></HEAD>
<BODY>
<P> </P>
<P>Hi,</P>
<P>This patch fixes PR14995 - <SPAN id=summary_alias_container><SPAN id=short_desc_nonedit_display>Too eagerly rejects operator function templates.</SPAN></SPAN></P>
<P><SPAN><SPAN>Please help review the same.</SPAN></SPAN></P>
<P><SPAN><SPAN></SPAN></SPAN> </P>
<P><SPAN><SPAN>Index: lib/Sema/SemaDeclCXX.cpp<BR>===================================================================<BR>--- lib/Sema/SemaDeclCXX.cpp (revision 200465)<BR>+++ lib/Sema/SemaDeclCXX.cpp (working copy)<BR>@@ -10913,7 +10913,11 @@<BR>     if (const BuiltinType *BT = LastParam->getType()->getAs<BuiltinType>())<BR>       ParamIsInt = BT->getKind() == BuiltinType::Int;<BR> <BR>-    if (!ParamIsInt)<BR>+    bool ParamIsDependent = false;<BR>+    if (LastParam->getType()->isDependentType())<BR>+      ParamIsDependent = true;<BR>+<BR>+    if (!ParamIsInt && !ParamIsDependent)<BR>       return Diag(LastParam->getLocation(),<BR>                   diag::err_operator_overload_post_incdec_must_be_int)<BR>         << LastParam->getType() << (Op == OO_MinusMinus);<BR>Index: test/SemaCXX/overloaded-operator.cpp<BR>===================================================================<BR>--- test/SemaCXX/overloaded-operator.cpp (revision 200465)<BR>+++ test/SemaCXX/overloaded-operator.cpp (working copy)<BR>@@ -452,3 +452,16 @@<BR>     Result = 1; // expected-error {{no viable overloaded '='}} // expected-note {{type 'PointerUnion<int *, float *>' is incomplete}}<BR>   }<BR> }<BR>+<BR>+namespace PR14995 {<BR>+<BR>+  struct B {};<BR>+  template<typename ...T> void operator++(B, T...) {}<BR>+<BR>+  void f() {<BR>+    B b;<BR>+    b++;  // ok<BR>+    ++b;  // ok<BR>+  }<BR>+}<BR>+</SPAN></SPAN></P>
<P><SPAN><SPAN></SPAN></SPAN> </P>
<P><SPAN><SPAN></SPAN></SPAN> </P>
<P><SPAN><SPAN>Thanks,</SPAN></SPAN></P>
<P><SPAN><SPAN>Rahul</SPAN></SPAN></P><!--SP:rahul1.jain--><!--rahul1.jain:EP-->
<P> </P>
<TABLE id=confidentialsignimg>
<TBODY>
<TR>
<TD NAMO_LOCK>
<P><IMG border=0 src="cid:XOK0LK7CT9SZ@namo.co.kr" width=520></P></TD></TR></TBODY></TABLE></BODY></HTML><img src='http://ext.samsung.net/mailcheck/SeenTimeChecker?do=d39c7ebe3c5c4be3b749e4adb16ef39adfe1b2c7effbe582e56225dd835e375f5f887f84397989de4b5562a776ba3bf30029dc535ebebcd3326bbdfb2ea96a2fcf878f9a26ce15a0' border=0 width=0 height=0 style='display:none'>