<div dir="ltr">On 8 April 2013 17:35, Jacob Carlborg <span dir="ltr"><<a href="mailto:doob@me.com" target="_blank">doob@me.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On 2013-04-08 06:30, Manu wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I wonder if UDA's could be leveraged to implement this in a library?<br>
UDA's can not permute the type, so I guess it's impossible to implement<br>
something like @noalloc that behaves like @nothrow in a library...<br>
I wonder what it would take, it would be generally interesting to move<br>
some of the built-in attributes to UDA's if the system is rich enough to<br>
express it.<br>
<br>
As a side though though, the information about whether a function can<br>
allocate could be known implicitly by the compiler if it chose to track<br>
that detail. I wonder if functions could gain a constant property so you<br>
can assert on that detail in your own code?<br>
ie:<br>
<br>
void myFunction()<br>
{<br>
   // does stuff...<br>
}<br>
<br>
<br>
{<br>
   // ...code that i expect not to allocate...<br>
<br>
   static assert(!myFunction.<u></u>canAllocate);<br>
<br>
   myFunction();<br>
}<br>
<br>
This way, I know for sure my code is good, and if I modify the body of<br>
myFunction at some later time (or one of its sub-calls is modified), for<br>
instance, to make an allocating library call, then i'll know about it<br>
the moment I make the change.<br>
</blockquote>
<br></div>
Scott Meyers had a talk about what he called red code/green code. It was supposed to statically enforce that green code cannot call red code. Then what is green code is completely up to you, if it's memory safe, thread safe, GC free or similar.<br>

<br>
I don't remember the conclusion and what could be implemented like this, but here's the talk:<br>
<br>
<a href="http://www.google.com/url?sa=t&rct=j&q=scott%20meyers%20red%20green%20code&source=web&cd=1&cad=rja&ved=0CCsQtwIwAA&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DJfu9Kc1D-gQ&ei=fXJiUfC3FuSB4gS41IHADQ&usg=AFQjCNGtKwLcr2jNjsC4RJ0_5k8WmAFzTw&bvm=bv.44770516,d.bGE" target="_blank">http://www.google.com/url?sa=<u></u>t&rct=j&q=scott%20meyers%<u></u>20red%20green%20code&source=<u></u>web&cd=1&cad=rja&ved=<u></u>0CCsQtwIwAA&url=http%3A%2F%<u></u>2Fwww.youtube.com%2Fwatch%3Fv%<u></u>3DJfu9Kc1D-gQ&ei=<u></u>fXJiUfC3FuSB4gS41IHADQ&usg=<u></u>AFQjCNGtKwLcr2jNjsC4RJ0_<u></u>5k8WmAFzTw&bvm=bv.44770516,d.<u></u>bGE</a></blockquote>
<div><br></div><div style>That sounds awesome. I'll schedule it for later on! :P</div></div></div></div>