Phobos - pure, const, safe, nothrow

monarch_dodra monarchdodra at gmail.com
Sun Sep 29 02:37:25 PDT 2013


On Sunday, 29 September 2013 at 09:00:56 UTC, simendsjo wrote:
> What is the status of adding these annotations to phobos? It's 
> difficult to use these until phobos gets them. E.g. to! and 
> format is not pure.

Most of phobos is templated, meaning it relies on inference. 
These functions are pure/nothrow/safe, if their implementations 
are. Also, since they are templates, more often then not, they 
depend on their parameters, making them *conditionally* 
pure/nothrow/safe. Under such circumstances, there is simply no 
way to *mark* them as such (even if they are).

Efforts have been made recently for more "base" functions to be 
pure/nothrow (and ctfe btw), especially in std.string and 
std.array.

*If* they can be marked as such, then (right now), we are tending 
to mark them as such.

As for to!: it really depends on the parameters. Plus, to! is 
very complicated. If there are specific conversion types you 
think should be safe, but aren't, then please file a report, (or 
just quickly say what you had in mind here).

I have an open pull that makes string transcoding 
"to!SomeStringType(someOtherStringInstance)" safe and pure. It 
still needs to get reviewed though. It can't be nothrow due to 
UTF though.


More information about the Digitalmars-d-learn mailing list