[linalg.layout.packed.cons]

# 29 Numerics library [[numerics]](./#numerics)

## 29.9 Basic linear algebra algorithms [[linalg]](linalg#layout.packed.cons)

### 29.9.6 Layouts for packed matrix types [[linalg.layout.packed]](linalg.layout.packed#cons)

#### 29.9.6.2 Constructors [linalg.layout.packed.cons]

[ð](#lib:layout_blas_packed::mapping,constructor)

`constexpr mapping(const extents_type& e) noexcept;
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L12151)

*Preconditions*: 

- [(1.1)](#1.1)

  Let N be equal to e.extent(0)[.](#1.1.sentence-1)
  Then, NÃ(N+1) is representable as
a value of type index_type ([[basic.fundamental]](basic.fundamental "6.9.2 Fundamental types"))[.](#1.1.sentence-2)

- [(1.2)](#1.2)

  e.extent(0) equals e.extent(1)[.](#1.2.sentence-1)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L12162)

*Effects*: Direct-non-list-initializes *extents_* with e[.](#2.sentence-1)

[ð](#lib:layout_blas_packed::mapping,constructor_)

`template<class OtherExtents>
  explicit(!is_convertible_v<OtherExtents, extents_type>)
    constexpr mapping(const mapping<OtherExtents>& other) noexcept;
`

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L12175)

*Constraints*: is_constructible_v<extents_type, OtherExtents> is true[.](#3.sentence-1)

[4](#4)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L12179)

*Preconditions*: Let N be other.extents().extent(0)[.](#4.sentence-1)

Then, NÃ(N+1) is representable as
a value of type index_type ([[basic.fundamental]](basic.fundamental "6.9.2 Fundamental types"))[.](#4.sentence-2)

[5](#5)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L12185)

*Effects*: Direct-non-list-initializes *extents_* with other.extents()[.](#5.sentence-1)
