Type constructor is a language construct that literally constructs a type (not a value), usually from one or more types. E.g. T[K] is a type constructor - given types T and K, constructs the type hash map etc.

So "new const(C)" is not a type constructor, it's at best an expression that constructs a value. "const(C)" is a type constructor that takes a type C and constructs a new type.

Type modifier is loosely-defined as a type constructor that takes one type and alters its properties just a bit.


Andrei

On 6/2/13 7:35 PM, Andrej Mitrovic wrote:
On 6/3/13, Andrei Alexandrescu<[email protected]>  wrote:
I think I have an understanding how that dual nature works for C++, but
not in D. Could you please give more detail. Then we can merge that with
the documentation, so you wouldn't have wasted time.

Oh yes, and then you can close this:
http://d.puremagic.com/issues/show_bug.cgi?id=9970

But from my limited understanding:

new const(C) ->  type constructor
cast(const(C))(new C) ->  type modifier
void foo(const(C)) ->  type modifier

Correct? No?
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta

Reply via email to