digitalmars.D.learn - Compile time checks and alias this
- Andrea Fontana (18/18) Dec 17 2013 I have something like this:
- anonymous (3/21) Dec 17 2013 is(T : MyClass1)
- Andrea Fontana (2/29) Dec 17 2013
- Chris Cain (4/9) Dec 17 2013 It actually means "is implicitly convertable to", which "is
I have something like this: enum isValid(T) = is(T == MyClass1); class MyClass1 {} class MyContainer(T) { T value; alias value this; } void main() { assert(isValid!MyClass1, "MyClass1 isn't valid"); assert(isValid!(MyContainer!MyClass1), "MyContainer!MyClass1 isn't valid"); } second assert conditions is false. But in normal code MyContainer!Myclass1 is casted automagically to MyClass1 and works almost as MyClass1. Is there a way to check this at compile time?
Dec 17 2013
On Tuesday, 17 December 2013 at 16:50:18 UTC, Andrea Fontana wrote:I have something like this: enum isValid(T) = is(T == MyClass1); class MyClass1 {} class MyContainer(T) { T value; alias value this; } void main() { assert(isValid!MyClass1, "MyClass1 isn't valid"); assert(isValid!(MyContainer!MyClass1), "MyContainer!MyClass1 isn't valid"); } second assert conditions is false. But in normal code MyContainer!Myclass1 is casted automagically to MyClass1 and works almost as MyClass1. Is there a way to check this at compile time?is(T : MyClass1)
Dec 17 2013
On Tuesday, 17 December 2013 at 17:19:26 UTC, anonymous wrote:On Tuesday, 17 December 2013 at 16:50:18 UTC, Andrea Fontana wrote:Hey didn't this mean "is derived from"? :)I have something like this: enum isValid(T) = is(T == MyClass1); class MyClass1 {} class MyContainer(T) { T value; alias value this; } void main() { assert(isValid!MyClass1, "MyClass1 isn't valid"); assert(isValid!(MyContainer!MyClass1), "MyContainer!MyClass1 isn't valid"); } second assert conditions is false. But in normal code MyContainer!Myclass1 is casted automagically to MyClass1 and works almost as MyClass1.Is there a way to check this at compile time?is(T : MyClass1)
Dec 17 2013
On Tuesday, 17 December 2013 at 21:28:12 UTC, Andrea Fontana wrote:Hey didn't this mean "is derived from"? :)It actually means "is implicitly convertable to", which "is derived from" satisfies.Is there a way to check this at compile time?is(T : MyClass1)
Dec 17 2013