On 06/12/2011 04:15 PM, Walter Bright wrote:
Nobody seems to have noticed yet, but yesterday I removed the
restriction preventing import declarations from being used in functions.
These now work:
void test1()
{
import std.c.stdio;
printf("hello world\n");
}
void test2()
{
static import std.c.stdio;
std.c.stdio.printf("hello world\n");
}
https://github.com/D-Programming-Language/dmd/commit/d5fbd53aa8d8452dce2514944575e654d387477a
I believe this can lead to better encapsulation of code, especially when
using mixins, versioning and other conditional compilation constructs.
Fabulous. std.benchmark already uses the feature, and from a mixin no less:
https://github.com/andralex/phobos/commit/c5f2778a0fc393d6bd17ebec4765b28937575c31
One interesting aspect of the feature is that if import is used from
within a template, it's not actually imported unless the template is
instantiated.
Andrei