On Tue, Nov 25, 2008 at 8:42 AM, 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); > > substitute traits for your favorite reflection keyword (how about traitsof?) > > There is also one other benefit to min and max (and others) being first > class properties. You can mimic their behavior in user-defined types. For > example, if int.min is changed to traits(min, int) or even int.traits.min, > then how do I define a similar 'minimum' for say, a time type, which would > be totally arbitrary. > > According to the spec, the only builtin properties that user defined types > have are init, sizeof, alignof, mangleof, stringof. With the exception of > init, most of these are pretty uncommon member names. > > I wouldn't mind moving init into traits (with the above syntax): > > C.traits.init > > The other properties are specific to the builtin types, and therefore cannot > conflict with members.
Fair enough. Also, I don't necessarily care about the syntax, just as long as it's unified ;)
