On Tue, 25 Nov 2008 16:42:55 +0300, Steven Schveighoffer <[EMAIL PROTECTED]> wrote:

Jarrett,

I agree with most of what you are saying, except for this:

"Jarrett Billingsley" wrote
Secondly - the type properties are cute but they're not very flexible.
They can interfere with fields and methods, and so the compiler has
to explicitly check that aggregate member names don't step on the
built-in property names.  I think that "T.prop" could just be replaced
with "traits(prop, T)".  traits(min, int), and so on.  Yes, it's
longer - but that's what templates are for, if you really want it
shorter: Min!(int).

Ugh!  Can we just change traits to not use the functional style?

I like as others have suggested:

C.traits.isVirtualMethod(foo);


What is foo in this context? If it is a function (C.foo) then I like "C.foo.traits.isVirtual" better, i.e. each member has its own set of traits:

class C
{
    int i;
    double d;
    void foo() {}
}

auto si = C.i.traits.offsetof;
auto di = C.d.traits.init;
auto fv = C.foo.traits.isVirtual;
auto fv2 = C.traits.methods[0].isVirtual;

Reply via email to