Skip to content

看完全书之后的一些希望作者补充细化的点 #65

Closed
@dc3671

Description

@dc3671

动机

看完了整本pdf,作为有C++98基础,新接触C++1z的新手,对于很多内容一开始都感到疑惑,自己另外查了很多资料才逐渐明白,建议作者把以下几点再丰富一下

需求说明

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions