<mailto:
timon.gehr@gmx.ch>> wrote:
On 09/26/2012 01:29 AM, Timon Gehr wrote:
On 09/25/2012 01:53 PM, Manu wrote:
So I have this recurring pattern, it's really starting to
annoy me.
It stems from the fact that a function prototype and the
definition can
not appear in the same file in D (as it can in C/C++)
Eg,
void func(int x); // <-- declaration of function, informs
type and
associated names, args, ...
//later
void func(int x) // <-- may be generated with magic (and may
use the
prototype declaration for type information as declared by
the prototype
above)
{
... do stuff
}
I really need this. Why is it illegal? Is there chance of
having this
supported? What are the problems?
...
It is illegal because nobody has written code to support it. It
should be possible to support it. I don't think there are any
problems
with the concept.
(The implementation faces some challenges, the following is easy to
get wrong:
module module_;
void foo();
alias foo alias1;
static if(is(typeof(alias1))){
void foo(){}
alias foo alias2;
}
static assert(__traits(isSame, alias1, alias2));
static assert(__traits(allMembers, module_).length == 3); // 2
alias, 1 function definition
)