Fully dynamic d by opDotExp overloading
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sat Apr 18 11:05:30 PDT 2009
Steven Schveighoffer wrote:
> I gave this a lot of thought, and I think here is a possible solution:
>
> the main reason I'm hesitant on this idea is because of code like this:
>
> class X
> {
> auto opDotExp(string fname, T...)(T args)
> {
> if(fname == "blah")
> return foo(args);
> else if(fname == "blither")
> return bar(args);
> // else, nothing happens
> }
> }
>
> Which leaves code open to lots of compiled code that doesn't do the
> right thing (or throws some runtime exception). What would be nice is
> if the default behavior is what statically bound functions do, that is,
> compile error, and only let the cases be handled which the author
> expects to handle.
class X
{
auto opDotExp(string fname, T...)(T args)
{
static if(fname == "blah")
return foo(args);
else static if(fname == "blither")
return bar(args);
else static assert(0, "Dunno how to "~fname);
}
}
Andrei
More information about the Digitalmars-d
mailing list