[meta.trans.sign]

# 21 Metaprogramming library [[meta]](./#meta)

## 21.3 Metaprogramming and type traits [[type.traits]](type.traits#meta.trans.sign)

### 21.3.9 Transformations between types [[meta.trans]](meta.trans#sign)

#### 21.3.9.4 Sign modifications [meta.trans.sign]

[1](#1)

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

The templates specified in Table [59](#tab:meta.trans.sign "Table 59: Sign modifications") convert an integer type to its corresponding signed or unsigned type[.](#1.sentence-1)

Table [59](#tab:meta.trans.sign) — Sign modifications [[tab:meta.trans.sign]](./tab:meta.trans.sign)  

| [ð](#tab:meta.trans.sign-row-1)<br>**Template** | **Comments** |
| --- | --- |
| [ð](#tab:meta.trans.sign-row-2)<br>template<class T>   struct make_signed; | If T is a (possibly cv-qualified) signed integer  type ([[basic.fundamental]](basic.fundamental "6.9.2 Fundamental types")) then the member typedef  type denotes T; otherwise,  if T is a (possibly cv-qualified) unsigned integer  type then type denotes the corresponding  signed integer type, with the same cv-qualifiers as T;  otherwise, type denotes the signed integer type with smallest  rank ([[conv.rank]](conv.rank "6.9.6 Conversion ranks")) for which  sizeof(T) == sizeof(type), with the same  cv-qualifiers as T[.](#tab:meta.trans.sign-row-2-column-2-sentence-1)<br>   *Mandates*: T is an integral or enumeration type  other than cv bool[.](#tab:meta.trans.sign-row-2-column-2-sentence-2) |
| [ð](#tab:meta.trans.sign-row-3)<br>template<class T>   struct make_unsigned; | If T is a (possibly cv-qualified) unsigned integer  type ([[basic.fundamental]](basic.fundamental "6.9.2 Fundamental types")) then the member typedef  type denotes T; otherwise,  if T is a (possibly cv-qualified) signed integer  type then type denotes the corresponding  unsigned integer type, with the same cv-qualifiers as T;  otherwise, type denotes the unsigned integer type with smallest  rank ([[conv.rank]](conv.rank "6.9.6 Conversion ranks")) for which  sizeof(T) == sizeof(type), with the same  cv-qualifiers as T[.](#tab:meta.trans.sign-row-3-column-2-sentence-1)<br>   *Mandates*: T is an integral or enumeration type  other than cv bool[.](#tab:meta.trans.sign-row-3-column-2-sentence-2) |
