Subtypes with tighter constraints
sascha.orlov at gmail.com
Tue Jan 1 19:33:15 UTC 2019
On Tuesday, 1 January 2019 at 14:05:43 UTC, Victor Porton wrote:
> In Ada2012 there are "subtypes". Subtypes can have tighter
> constraints (such as type invariants) than their base types.
> I have a struct X in D. Is it possible to define a type
> equivalent to X except that having tighter invariants?
> As I understand if I derive Y from X, then it is no more X;
1. As Ada is strongly typed, this is the same there, no?
2. You cannot derive structs in D. Therefore, I assume, that you
meant that X and Y are classes.
> that is I cannot use X (even provided it matches Y invariants)
> where I need Y. So in D it is impossible, right?
It is possible, as invariants are inherited implicitly, see
auto x = new X();
auto y = new Y();
x.d = 0.0;
y.d = 1.0;
class Y : X
assert(d > 0);
void fun(T)(T t)
More information about the Digitalmars-d-learn