# Fundamental C++: the Element design pattern.

Core constructs for Vaucanson. More...

Collaboration diagram for Fundamental C++: the Element design pattern.:

## Classes

class | Element< S, T >
| Glue class between structural elements and implementation values. More...
struct | op_add_traits< S1, S2, T1, T2 >
| The type of the result of addition between two Element instances. More...
struct | MetaElement< Structure< S >, T >
| The base class that glues structural elements to implementation values. More...
struct | SetSlotAttribute< S, dynamic >
| Base class for `SetSlot`. More...
struct | SetSlotAttribute< S, true >
| Base class for `SetSlot`, specializing `SetSlotAttribute`. More...
struct | SetSlot< S, Tag >
| Type of the `set_` attribute of the `Element` class. More...
struct | Structure< S >
| Base class for the hierarchy of structural element types. More...
struct | dynamic_traits< Structure< S > >
| Specialization of `dynamic_traits` for `Structure`. More...
struct | virtual_types< Structure< S > >
| Specialization of `virtual_types` for `Structure`. More...
struct | SyntacticDecorator< S, T >
| Provides the standard operator delegations to Element. More...
class | MetaElement
| Parent class of Element. More...

## Modules

| Operators

## Files

file | default_ops.hh

| Default implementations for standard `Element` operations.
file | element.hh

| Declaration of `Element`.
file | element_op_traits.hh

| Declaration of default arithmetical operator traits for `Element`.
file | element_ops.hh

| Declarations of standard external operator delegations for `Element`.
file | meta_element_root.hh

| Definition of the specialization of `MetaElement` for the root `Structure`.
file | predecls.hh

| Forward declarations of the design pattern template classes of Vaucanson.
file | slots.hh

| Declaration of set attribute slot for `Element`.
file | structure.hh

| Definition of class `Structure`, the root of all structural element types.
file | syntactic_decorator.hh

| Declaration of the very base class of `Element`.

## Functions

| SetSlotAttribute ()
| Trivial constructor.

## Detailed Description

Core constructs for Vaucanson.

This module contains definitions for the design pattern used in Vaucanson, so called "Element". This design pattern is more deeply described in the paper by Yann Régis-Gianas and Raphaël Poss: On orthogonal specialization in C++: Dealing with efficiency and algebraic abstraction in Vaucanson. In the proceedings of the Parallel/High-performance Object-Oriented Scientific Computing (POOSC'2003) Darmstadt, Germany July 2003.

See also:
  http://publications.lrde.epita.fr/200307-Poosc