std::decay - cppreference.com (original) (raw)

| | | | | ---------------------------------- | | ------------- | | template< class T > struct decay; | | (since C++11) |

Performs the type conversions equivalent to the ones performed when passing function arguments by value. Formally:

If the program adds specializations for std::decay, the behavior is undefined.

[edit] Member types

Name Definition
type the result of applying the decay type conversions to T

[edit] Helper types

| template< class T > using decay_t = typename decay<T>::type; | | (since C++14) | | ---------------------------------------------------------------- | | ------------- |

[edit] Possible implementation

[edit] Example

#include   template<typename T, typename U> constexpr bool is_decay_equ = std::is_same_v<std::decay_t, U>;   static_assert ( is_decay_equ<int, int> && ! is_decay_equ<int, float> && is_decay_equ<int&, int> && is_decay_equ<int&&, int> && is_decay_equ<const int&, int> && is_decay_equ<int[2], int*> && ! is_decay_equ<int[4][2], int*> && ! is_decay_equ<int[4][2], int**> && is_decay_equ<int[4][2], int(*)[2]> && is_decay_equ<int(int), int(*)(int)> );   int main() {}

[edit] See also