The challenge is how to describe the abstract semantics in its full generality: just how widely is the component adaptable? This often requires creativity, and several tries--you might not realize how general the component is until you attempt to describe it carefully. Entirely new ways to use it may be suggested.
Also you may have to define new concepts, by means of sets of requirements, in order to organize your descriptions coherently.
The remaining discussion in this section will emphasize techniques for describing a component in its full generality and avoiding descriptions that would unnecessarily exclude certain uses.
Once again, we look at examples of user-level generic component documentation from the SGI Web pages on STL.
There are a few places where the SGI documentation does not describe
components in their full generality, such as the merge
function
(see below).