Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| language:impl [2022/05/13 12:40] – rajit | language:impl [2023/04/09 22:06] (current) – [Overrides] rajit | ||
|---|---|---|---|
| Line 245: | Line 245: | ||
| representation of the Boolean variable. | representation of the Boolean variable. | ||
| + | === Overriding conditional instances and templated types === | ||
| + | An instance created in a type definition may be created only under certain circumstances. | ||
| + | This can occur in templated types, where template parameters can affect the instances within the type. | ||
| + | The override block has the simple syntax shown above. However, to account for conditional instances, | ||
| + | the override block directives implicitly check if the instance exists before applying the override. (Note that | ||
| + | ACT does not permit different types for the same instance name under different conditions.) | ||
| + | When a type is being overridden by another, the new implementation may have additional template parameters. | ||
| + | The override syntax above requires the complete list of template parameters to be specified. Instead, we also | ||
| + | provide a single extension override syntax | ||
| + | |||
| + | <code act> | ||
| + | +{ | ||
| + | type< | ||
| + | ... | ||
| + | } | ||
| + | </ | ||
| + | The '' | ||