c++14的新增的小的特性

程序员小x小于 1 分钟C++C++

c++14的新增的小的特性

std::decay

类型退化:

  • 去除const和volatile
  • 去除引用
  • 数组退化为指针
  • 函数退化为指针

如果类型T是一个函数类型,那么从函数到指针的类型转换将被应用,并且T的衰变类型等同于:

add_pointer<T>::type

如果类型T是一个数组类型,那么从数组到指针的类型转换将被应用,并且T的衰变类型等同于:

add_pointer<remove_extent<remove_reference<T>::type>::type>::type

当左值到右值转换被应用时,T的衰变类型等同于:

remove_cv<remove_reference<T>::type>::type

#include <iostream>
#include <type_traits>
 
template <typename T, typename U>
struct decay_equiv : 
    std::is_same<typename std::decay<T>::type, U>::type 
{};
 
int main()
{
    std::cout << std::boolalpha
              << decay_equiv<int, int>::value << '\n'
              << decay_equiv<int&, int>::value << '\n'
              << decay_equiv<int&&, int>::value << '\n'
              << decay_equiv<const int&, int>::value << '\n'
              << decay_equiv<const volatile int&, int>::value << '\n'
              << decay_equiv<int[2], int*>::value << '\n'
              << decay_equiv<int(int), int(*)(int)>::value << '\n';
}
Loading...