<div dir="ltr">* fix = fit<div class="gmail_extra"><br><br><div class="gmail_quote">On 31 May 2013 20:56, Manu <span dir="ltr"><<a href="mailto:turkeyman@gmail.com" target="_blank">turkeyman@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div class="h5">On 31 May 2013 20:47, Timon Gehr <span dir="ltr"><<a href="mailto:timon.gehr@gmx.ch" target="_blank">timon.gehr@gmx.ch</a>></span> wrote:<br>
</div></div><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div>On 05/28/2013 05:45 PM, Kenji Hara wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
It looks reasonable, but in general case it would introduce not trivial<br>
semantic issue.<br>
<br>
Based on the current D language spec, prefix attribute is just rewritten<br>
to blocked attribute.<br>
<br></div>
@attribute("target", T) void func(string T)() {}<br>
<br>
to:<br>
@attribute("target", T) {<br>
     void func(string T)() {}<br>
}<br>
<br>
</blockquote>
<br>
It is my understanding as well, but where is this actually specified?<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
And block attribute can contain other declarations.<br>
<br>
@attribute("target", T) {<br>
<br>
     enum str = T.stringof;<br>
<br>
     void func(string T)() {}<br>
}<br>
<br>
Well, if the enhancement is implemented, T would be deduced by the each<br>
call of template function foo. Then the enum value would become<br>
undeterministic.<br>
<br>
I think it is not implementable.<br></div>
...<br>
</blockquote>
<br>
<br>
This does not follow.<br>
<br>
@attribute("target", T) void func(string T)() {}<br>
<br>
would simply need to be treated like:<div><br>
<br>
template func(string T){<br>
    @attribute("target", T) void func() {}<br>
}<br>
<br></div>
(The same would then be done for other attributes.)<br>
<br>
I think it makes a difference only for UDA's and pragmas.<br></blockquote><div><span style="color:rgb(80,0,80)"><br></span></div></div></div><div><font color="#000000">Or fully expanded:</font></div><div class="im"><div>
<font color="#000000"><br>
</font></div><div><font color="#000000">template func(string T) {<br></font></div><font color="#000000">  @attribute("target", T) {</font></div></div><div class="gmail_quote"><font color="#000000">    void func() { }</font></div>

<div class="gmail_quote"><font color="#000000">  }<br>}</font></div><br></div><div class="gmail_extra">This seems to fix the existing semantics rather nicely.</div></div>
</blockquote></div><br></div></div>