Simple implementation of __FUNCTION
Simen Kjaeraas
simen.kjaras at gmail.com
Tue Nov 6 02:17:24 PST 2012
On 2012-46-06 08:11, Don Clugston <dac at nospam.com> wrote:
> It fails because you're asking for the full function name, before its
> type has been determined. (There's no real return type 'auto', 'auto'
> just means 'work it out for me').
>
> I don't think this is a bug. Although it might be solvable in this
> particular example, in general it's a circular dependency.
>
> eg, if you do:
>
> auto foo()
> {
> static if (__FUNCTION == "int foo()") { return 'a' }
> return 0;
> }
> if __FUNCTION is "int foo()" then it will return a char, which means its
> signature is "char foo()". This is a contradiction.
DMD already does some cycle detection for types, right? I don't remember
the details, but i seem to recall this was made to work a few releases
back:
class Foo {
static if ( is( typeof( Foo.bar ) ) ) {
void baz() {}
}
static if ( true ) {
int bar() {}
}
}
The algorithm would probably have to exclude mixins, but I think it could
be made to work for most cases.
--
Simen
More information about the Digitalmars-d
mailing list