C++11 decay
一 定义
- 头文件 <type_traits>
template< class T >
struct decay; (since C++11)
- 辅助类型
template< class T >
using decay_t = typename decay<T>::type; (since C++14)
二 作用
- 退化类型的修饰。
- 为类型T应用从左值到右值(lvalue-to-rvalue)、数组到指针(array-to-pointer)和函数到指针(function-to-pointer)的隐式转换。转换将移除类型T的cv限定符(const和volatile),并定义结果类型为 decay< T >::type。这种转换很类似于函数参数按值传递时发生的转换。有以下几种情况:
- 若 T 为“ U 的数组”或“到 U 的数组的引用”类型,则 decay< T >::type 为 U* 。
- 若 T 为函数类型 F 或到它的引用,则 decay< T >::type 为 std::add_pointer< F >::type 。
- 否则,decay< T >::type 为 std::remove_cv<std::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' // 情况3<< decay_equiv<int&, int>::value << '\n' // 情况3<< decay_equiv<int&&, int>::value << '\n' // 情况3<< decay_equiv<const int&, int>::value << '\n' // 情况3<< decay_equiv<int[2], int*>::value << '\n' // 情况1<< decay_equiv<int(int), int(*)(int)>::value << '\n'; // 情况2
}
- 结果
true
true
true
true
true
true
四 参考
- cppreference-decay
C++11 decay相关推荐
- 2.2.6 学习率衰减
学习率衰减 加快神经网络的另一个办法就是随着时间推移慢慢减少学习率.我们将这个称之为学习率衰减. 如图中蓝色线所示,当mini-batch不大的时候,噪声会比较明显.最后不会精确地收敛,而是在最小值附 ...
- 深入tensorflow1.x
文章目录 一.tensorflow 安装 二.核心概念 2.1 计算图 2.2 Tensor 2.3 会话Session 2.4 两层神经网络 三.深层神经网络 1. 优化方法 2. 指数衰减的学习率 ...
- C++(11):通过is_same检查类型,decay退化类型
C++11的标准库引入了is_same<T1, T2>函数,可以通过其成员value检查类型T1与T2是否相同: #include <iostream> using names ...
- C++11中头文件type_traits介绍
C++11中的头文件type_traits定义了一系列模板类,在编译期获得某一参数.某一变量.某一个类等等类型信息,主要做静态检查. 此头文件包含三部分: (1).Helper类:帮助创建编译时常量的 ...
- C++11多线程中std::call_once的使用
C++11中的std::call_once函数位于<mutex>头文件中. 在多线程编程中,有时某个任务只需要执行一次,此时可以用C++11中的std::call_once函数配合std: ...
- 概率论中指数分布介绍及C++11中std::exponential_distribution的使用
指数分布:在深度学习中,我们经常会需要一个在x=0点处取得边界点(sharp point)的分布.为了实现这一目的,我们可以使用指数分布(exponential distribution): p(x; ...
- (原创)用c++11打造好用的any
上一篇博文用c++11实现了variant,有童鞋说何不把any也实现一把,我正有此意,它的兄弟variant已经实现了,any也顺便打包实现了吧.其实boost.any已经挺好了,就是转换异常时,看 ...
- GitHub服务中断24小时11分钟事故分析报告\n
上周,GitHub经历了一次事故,导致服务降级24小时11分钟.虽然平台的某些部分不受事故影响,但仍然有多个内部系统受到了影响,向用户显示了过时且不一致的内容.所幸没有用户数据丢失,但针对几秒钟数据库 ...
- C++11模版元编程的应用
1.概述 关于C++11模板元的基本用法和常用技巧,我在程序员2015年2月B<C++11模版元编程>一文(后称前文)中已经做了详细地介绍,那么C++11模版元编程用来解决什么实际问题呢, ...
- Multi-thread--C++11多线程中std::call_once的使用
C++11中的std::call_once函数位于<mutex>头文件中. 在多线程编程中,有时某个任务只需要执行一次,此时可以用C++11中的std::call_once函数配合std: ...
最新文章
- linux杀死tomcat进程6,Linux下启动停止查看杀死Tomcat进程(示例代码)
- 查看磁盤使用情况linux,在Linux系统下安装Filelight来查看磁盘使用情况
- python全栈 互联网协议
- 【Paper】41_[24]novel type of phase transition in a system of self-driven particles
- React从入门到精通系列之(12)深入理解JSX
- 编程的一些快捷键(转帖)
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1093:计算多项式的值
- 虚拟机和Linux系统的安装
- 操作系统上机作业--多线程排序
- JS——构造函数、原型与实例之间的关系 及 原型链 的描述
- Leetcode91. Decode Ways
- 通过pip下载的包默认位置在哪
- Windows免费录屏软件——captura
- google drive加速下载
- 济南ITSS证书办理大全
- Paypal与Moneybookers的比较
- 我的世界服务器无限漏斗,我的世界漏斗bug 我的世界怎么刷东西
- 51单片机——交通灯
- linux(ubuntu 14.04 lubuntu14.04)下 搜狗拼音法安装后无法运行的解决方法
- matlab卷积和互相关,互相关与卷积