<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body 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 Mar 9, 2016, at 4:28 AM, Erik Verbruggen &lt;<a href="mailto:erik.verbruggen@me.com" class="">erik.verbruggen@me.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><i style="font-size: 14px;" class="">Generic constants</i></div><div class=""><br class=""></div><div class="">let constants could be allowed to have generic parameters, such that they produce differently-typed values depending on how they are used. For example, this is particularly useful for named literal values, e.g.,</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><font face="Menlo" class="">let&nbsp;π&lt;T : FloatLiteralConvertible&gt;: T =&nbsp;3.141592653589793238462643383279502884197169399</font></div></blockquote><div class=""><br class=""></div><div class="">The Clang importer could make particularly good use of this when importing macros.</div></div></div></blockquote><br class=""></div><div class="">I assume the following will fall under "constant expression":</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>let 2π = 2 *&nbsp;π</div></div></div></blockquote><div><br class=""></div>That would involve inferring that 2π is a generic constant… could certainly be something to explore, but it’s somewhat new territory.&nbsp;</div><div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">Also, how does the clang-importer handle:</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>#define M_DOUBLE_PI (2 * M_PI)</div><div class=""><br class=""></div><div class="">Or rephrasing, this is specifically for the case where the initialiser only consists of a single literal token?</div></div></div></blockquote><br class=""></div><div>I was thinking of it in terms of a single literal token, but I’m pointing out the feature as a possibility, not doing the detailed design work that would be involved in making it real. It’s possible we could make the importer smarter in this regard.</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>- Doug</div><div><br class=""></div><br class=""></body></html>