# Derived Data Types

You can create derived data types from intrinsic data types or previously defined derived types.

A derived type is resolved into "ultimate" components that are either of intrinsic type or are pointers.

The set of values for a specific derived type consists of all possible sequences of component values permitted by the definition of that derived type. Structure constructors are used to specify values of derived types.

Nonintrinsic assignment for derived-type entities must be defined by a subroutine with an ASSIGNMENT interface. Any operation on derived-type entities must be defined by a function with an OPERATOR interface. Arguments and function values can be of any intrinsic or derived type.

A derived type can be parameterized by type parameters. Each type parameter is defined to be either a kind or a length type parameter, and can have a default value.

Derived-Type Definition

A derived-type definition specifies the name of a user-defined type and the types of its components. For more information on the syntax of a derived-type definition, see TYPE. For more information on derived-type definitions for polymorphic objects, see CLASS.

Parent topic: Data Types, Constants, and Variables

- Default Initialization
- Procedure Pointers as Derived-Type Components
- Type-Bound Procedures
- Type Extension
- Parameterized Derived-Type Declarations
- Structure Components
- Structure Constructors

## See Also

Derived-Type Assignment Statements
Defining Generic Operators for details on OPERATOR interfaces
Defining Generic Assignment for details on ASSIGNMENT interfaces
TYPE Statement (Derived Types)
Parameterized Derived-Type Declarations
Records for details on record structures