# aligned_offset

Represent an integer based offset whose value is a multiple of an IndexAlignment specified at compile time. `#include <sdlt/aligned_offset.h>`

## Syntax

    template<int IndexAlignmentT>
    class aligned_offset;

## Arguments

`int IndexAlignmentT` | The index alignment the user is stating that the offset have.

## Description

aligned_offset is a deprecated feature.

If we can tell the compiler that we know an offset will be a multiple of known value, then when combined with a loop index inside a SIMD loop, the compiler can use that information to maintain aligned access when accessing underlying data layout.

Internally, the offset value is converted to a block count.

    Block Count = offsetValue/IndexAlignmentT;

Indices can then use that aligned block count as needed.

Member | Description
--- | ---
    static const int IndexAlignment = IndexAlignmentT;
| The alignment the offset is a multiple of
    explicit aligned_offset(const int offset)
| Construct instance based on offset
    static aligned_offset from_block_count(int aligned_block_count);
| Returns: Instance based on aligned_block_count, where the offset value = IndexAlignment*aligned_block_count
    int aligned_block_count() const;
| Returns: number of blocks of IndexAlignment it takes to represent the offset value.
    int value() const;
| Returns: offset value

Parent topic: Number Representation