# Component Requirements

## Functional Requirements

1. Keys:
   1. Key objects must be copy-constructible (they need not support assignment).
   2. Key objects must be destructible.
2. Data:
   1. Data objects must be copy-constructible (they need not support assignment).
   2. Data objects must be default constructible.
   3. Data objects must be destructible.

## Exception Requirements

1. Keys:
   1. Key objects must not throw exceptions when destructed.
   2. Key objects may throw exceptions when copy constructed.
2. Data:
   1. Data objects must must not throw exceptions when destructed.
   2. Data objects may throw exceptions when copy constructed.