On 12/03/2015 04:05 PM, FreeSlave wrote:
I don't understand how it is namespace (it's just named scope for me)
and why do we need template for that? Probably struct with static
members would work the same without need for instantiating the template.
How would one use a struct for the List example? There's no access to
"this". Yes, it's a named scope.
When talking about namespaces in the C++ sense, the feature of namespace
is that it can be scattered among many files and can be 'using'.
Wasn't thinking of C++ namespaces specifically, just an interesting
artifact.
FWIW I wanted to use it to allow lst.linear.stable.insert() and
lst.stable.linear.insert() to refer to the same function, but this is
not working. Qualifies as a bug?
template _pseudo_namespace()
{
void fun(int x)
{
import std.stdio;
writeln(x);
}
}
alias pseudo_namespace = _pseudo_namespace!();
struct List(T)
{
template _stable()
{
void insert(int x)
{
import std.stdio;
writeln(x);
}
}
alias stable = _stable!();
template _linear()
{
alias stable = _stable!();
}
alias linear = _linear!();
}
void main()
{
pseudo_namespace.fun(1);
List!int lst;
lst._stable!().insert(2);
lst.stable.insert(2);
lst._linear!().stable.insert(2);
lst.linear.stable.insert(2);
}
Andrei