<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Sep 30, 2014, at 3:57 PM, Douglas Gregor <<a href="mailto:dgregor@apple.com">dgregor@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Sep 29, 2014, at 4:41 PM, jahanian <<a href="mailto:fjahanian@apple.com" class="">fjahanian@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=windows-1252" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><div class=""><br class=""></div><blockquote type="cite" class=""><meta http-equiv="Content-Type" content="text/html charset=windows-1252" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi All,<div class=""><div class="">We have internal request to allow ‘_’ in addition to ‘.’ as version tuple separators.</div><div class="">So, in addition to <font face="Menlo" class=""><span style="font-size: 11px;" class="">'major[.minor[.subminor]]’, proposal is to allow ‘major[_minor[_subminor]]’</span></font></div><div class=""><font face="Menlo" class=""><span style="font-size: 11px;" class="">as well. Is there a reason we shouldn’t do this?</span></font></div></div></div></blockquote></div></div></div></blockquote><br class=""></div><div>There is some interaction with C++11 user-defined literals, because one can define (for example)</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">      </span>unsigned long long operator "" _0(unsigned long long x) { return -x; }</div><div class=""><br></div></div></blockquote><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div>which makes “10_0” produce the value -10. However, Parser::ParseVersionTuple is already doing custom parsing of the numeric constant, so I think we’re okay… but be sure to run all of your tests in C++11, C++03, and C to be sure that none of our workaround or UDL logic gets in the way.</div></div></blockquote><div><br></div>My change specifically impacts parsing version numbers for availability attributes only. Unless I misunderstood you, it should not have</div><div>impact on parsing any other construct.</div><div>In r218884.</div><div>- Fariborz<br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>- Doug</div><div><br class=""></div><br class=""></div></blockquote></div><br></body></html>