On Saturday, 31 August 2013 at 16:39:22 UTC, monarch_dodra wrote:
It's a trick that is useful when doing non-template functions
inside a templated struct. EG:
struct S(T)
{
T t;
T foo()
{
return t;
}
}
Here, we don't know if foo is nothrow, as the postblit could
throw, for example. If we make it a template, then the compiler
deduces it for us.
Bad example, the "correct" example is one that uses voldermort
typing:
auto foo(T)()
{
struct S //S is not a template
{
void bar(){}
}
return S();
}
void main() pure nothrow @system
{
auto s = foo!int();
s.bar(); //Error here!
}
but, again, arguably, that should have "just worked" (tm)