This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
eiffel:faq:void-safety [2018/01/10 04:57] jonathan |
eiffel:faq:void-safety [2018/05/16 03:31] (current) jonathan |
||
---|---|---|---|
Line 8: | Line 8: | ||
(login with ''anonymous'' and no password). | (login with ''anonymous'' and no password). | ||
- | ===== Code and slides===== | + | ===== Slides and Code===== |
<code> | <code> | ||
Line 14: | Line 14: | ||
</code> | </code> | ||
- | [[https://youtu.be/nq3-ZnaLOJs|Slide Video]] | + | [[https://youtu.be/nq3-ZnaLOJs|Slide Video]] |
+ | {{ :eiffel:faq:faq:void-safety.pdf |pdf}} | ||
+ | |||
+ | ===== Formal generic type declarations ===== | ||
+ | |||
+ | |||
+ | *FOO [G] = FOO [G -> detachable separate ANY] - actual generic can be detachable and can be separate. | ||
+ | *FOO [G -> detachable ANY] - actual generic can be detachable, but it is never separate. | ||
+ | *FOO [G -> ANY] = FOO [G -> attached ANY] - actual generic is always attached and is never separate. | ||
+ | *FOO [G -> separate ANY] = FOO [G -> attached separate ANY] - actual generic is always attached and can be separate. | ||
+ | |||
+ | It is also possible to have indirect constraints, e.g. BAR [G -> H, H -> ANY] means that actual generic parameter corresponding to G should be attached and non-separate. |