c++ forward关键字 forward的由来:模板函数中的推导类型,作为另一函数的参数时,不管实参是什么类型,作为另一个参数的实参时,都变成了左值。因为C++里规定函数的形参就是左值,不过调用侧的实参是否是右值。所以,调用的另一个函数的形参即使用T&& arg来声明,传过去的也是左值,编译不过 ...
分类:
编程语言 时间:
2019-01-24 15:34:48
阅读次数:
237
1.4 块运算 块是矩阵或数组的一个矩形部分。块表达式既可以做左值也可以作右值。和矩阵表达式一样,块分解具有零运行时间成本,对你的程序进行优化。 1.使用块运算 最常用的块运算是.block()成员函数。以下是两个版本的块定义: 块运算 动态大小的块定义版本 指定大小的块定义版本 定义从第i行第j列 ...
分类:
其他好文 时间:
2019-01-22 21:46:24
阅读次数:
192
首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。 static性质 隐藏 当同时编译多个文件时,未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。 全局变量名或者函数名前加static,就会对其它源文件隐藏。利用这一 ...
分类:
编程语言 时间:
2019-01-19 11:06:51
阅读次数:
257
引言 auto : 类型推导. 在使用c++的时候会经常使用, 就像在考虑STL时迭代器类型, 写模板的时候使用auto能少写代码, 也能帮助我们避免一些隐患的细节. auto初始化 1. 使用 型别推导要求 必须在定义时初始化 , 毕竟需要根据对象的类型推导左值对象的型别. 1. 但是 型别推导会 ...
分类:
其他好文 时间:
2019-01-18 01:02:16
阅读次数:
253
今天看书见到如下代码: int a=2; ++a++; 根据操作符的优先级和结合性知,操作符++的优先级为3,结合性为右结合,即++a++;可以理解为++(a++); 但我把代码放在vs2015上,结果报错,如图: 意思就是所a++不能作为左值,那a++为什么不能作为左值呢?我们先来看左值的定义: ...
分类:
其他好文 时间:
2019-01-12 13:11:42
阅读次数:
177
一、C++左值右值概念 左值:c++将变量名代表的单元称为左值,而将变量的值称为右值,左值必须是内存中可以访问且可以合法修改的对象,因此只能是变量名,而不能是常量或表达式。即左值可以寻址。 右值:将变量的值称为右值,由运算操作(加减乘除,函数调用返回值等)所产生的中间结果(没有名字的结果)称为右值。 ...
分类:
编程语言 时间:
2019-01-10 13:07:01
阅读次数:
233
复合类型是指基于其他类型定义的类型。介绍两种复合类型:引用和指针。 C++11中新增了一种引用,“右值引用”——主要是基于内置类。使用术语“引用”时是指“左值引用”。 引用& 为对象起了另外一个名字,引用类型引用另一种类型。引用必须被初始化。一般在初始化变量时,初始值会被拷贝到新建的对象中。然而定义 ...
分类:
其他好文 时间:
2019-01-08 23:32:25
阅读次数:
213
ignore 一个未指定的类型对象,任何值都可以没有影响地赋值给它。通常使用tie来解压一个元组,作为可以忽略的占位符。 tie 创建一个元组的左值引用 可以看到,tie函数返回的是一个tuple的左值引用 tie函数可以用来解压一个pair,tuple,也可以用来产生一个结构体的顺序比较 输出: ...
分类:
编程语言 时间:
2019-01-02 22:17:51
阅读次数:
240
https://mp.weixin.qq.com/s/F_08jKFMoX9Gf_J_YpsDpg 两个数据变量进行某个操作(op),产生一个输出,这个输出存在一个匿名变量中。这个匿名变量就是以OpBinding的形式绑定到hardware graph中的。 0. 这里先简单对 "=" 和 ":=" ...
分类:
其他好文 时间:
2019-01-01 14:06:08
阅读次数:
209
右值引用之完美传递参数,右值传递为右值,左值传递为左值 ...
分类:
编程语言 时间:
2018-12-30 14:45:44
阅读次数:
169