1
For any task subtype T, the following attribute is defined:
Denotes an implementation−defined value of type universal_integer representing the number of storage elements reserved for a task of the subtype T.
2.a
To be honest: T'Storage_Size cannot be particularly meaningful in the presence of a pragma Storage_Size, especially when the expression is dynamic, or depends on a discriminant of the task, because the Storage_Size will be different for different objects of the type. Even without such a pragma, the Storage_Size can be different for different objects of the type, and in any case, the value is implementation defined. Hence, it is always implementation defined.
3/2
{00345AI95−00345−01} {specifiable (of Storage_Size for a task first subtype) [partial]} Storage_Size may be specified for a task first subtype that is not an interface via an attribute_definition_clause.
3.a/2
{00345AI95−00345−01} We don't allow specifying Storage_Size on task interfaces. We don't need to mention class−wide task types, because these cannot be a first subtype.