Closed
Description
动机
看完了整本pdf,作为有C++98基础,新接触C++1z的新手,对于很多内容一开始都感到疑惑,自己另外查了很多资料才逐渐明白,建议作者把以下几点再丰富一下
需求说明
- 左值引用和右值引用:常量左值引用为什么能引用右值?这是历史遗留问题,见为什么常量左值引用可以绑定到右值? - 邱昊宇的回答 - 知乎
- auto&&在for循环中为什么约定俗成这样,而不是auto&:auto&&是转发引用,这是使用范围 for 循环的最安全方式。与auto&区别在于能保留原m中元素的左右值类型。见引用声明
- forward和move实现方式:书里“完美转发”章节的末尾一句话 “从现象上来看,std::forward(v) 和 static_cast<T&&>(v) 是完全一样的。”包含的信息量极大,在初看之时完全无法理解,怎么能做到一个语句就针对两种类型的v返回对应的值,而不是有判断/重载之类的呢?在看了别人的博客研究了forward的源码之后才明白核心在于这个T的类型推断,传进左值和传进右值T是不同的,进而强制转换中T&&的推断结果也不同,十分精妙,而书中完全没有点破这一关键点。见C++11:std::move和std::forward源码分析
- 另外,第二章的变长参数列表遍历方法第二种,利用的std::initializer_list也忘记在后面介绍了,希望补上,因为我到现在还没看懂那段代码