ocean.meta.types

This package contains various template utilities that deduce types or values by reflecting on supplied type arguments and doing some compile-time manipulations on them.

NB: because this module is often used as purely compile-time dependency it used built-in asserts instead of ocean.core.Test to reduce amount of cyclic imports. ocean.meta modules in general are not supposed to import anything outside of ocean.meta.

Modules

Arrays
module ocean.meta.types.Arrays

Utilities to manipulate array types

Enum
module ocean.meta.types.Enum
Function
module ocean.meta.types.Function

Static reflection templates specific to various function-like types

Qualifiers
module ocean.meta.types.Qualifiers

Templates to define types with modified qualifiers based on some input types.

ReduceType
module ocean.meta.types.ReduceType

Generic utility allowing to recursively visit an arbitrary type and reduce its definition to some compile-time value. It is intended to be used as an implementation cornerstone for complex type traits to avoid having to rewrite the recursive type reflection boilerplate wherever it's needed.

ReduceType_test
module ocean.meta.types.ReduceType_test
Templates
module ocean.meta.types.Templates
Typedef
module ocean.meta.types.Typedef

Public Imports

ocean.meta.types.Arrays
public import ocean.meta.types.Arrays;
Undocumented in source.
ocean.meta.types.Enum
public import ocean.meta.types.Enum;
Undocumented in source.
ocean.meta.types.Function
public import ocean.meta.types.Function;
Undocumented in source.
ocean.meta.types.Qualifiers
public import ocean.meta.types.Qualifiers;
Undocumented in source.
ocean.meta.types.ReduceType
public import ocean.meta.types.ReduceType;
Undocumented in source.
ocean.meta.types.Templates
public import ocean.meta.types.Templates;
Undocumented in source.
ocean.meta.types.Typedef
public import ocean.meta.types.Typedef;
Undocumented in source.

Meta

License

Boost Software License Version 1.0. See LICENSE_BOOST.txt for details. Alternatively, this file may be distributed under the terms of the Tango 3-Clause BSD License (see LICENSE_BSD.txt for details).