diff --git a/COMMUNITY.md b/COMMUNITY.md index 1a2a7db..ac190f3 100644 --- a/COMMUNITY.md +++ b/COMMUNITY.md @@ -1,13 +1,13 @@ -# 交流 - -本书有以下读者交流群,有兴趣的读者可以加入,加群需正确回答加群密码: - -![](qq-group.png) - -> 提示: `bW9kZXJuLWNwcC10dXRvcmlhbC1naXRodWI=` - # Community The book offers a telegram chat group, feel free to join if you are interested: [![](https://img.shields.io/badge/chat-telegram-blue.svg?style=popout-square&logo=telegram)](https://t.me/joinchat/FEeulBM5OVYzuDI4phQ9Mg) + +# 交流 + +本书有以下读者 QQ 交流群,有兴趣的读者可以加入,加群需正确回答加群密码: + +![](./assets/qq-group.png) + +> 提示: `bW9kZXJuLWNwcC10dXRvcmlhbC1naXRodWI=` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4fe54c1..80a9481 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,36 @@ +# How to contribute + +## Submit Issue + +C++ 11/14/17 issue is used to track the principle description error, `typo` error, and the questions to the author of the book. + +- Usually, you may encounter typos, semantic errors, grammatical errors, and etc. These are all `typo` errors. If an error has caused some obstacles to your reading and you strongly believe that the `typo` will also affect others reading. Then you are very welcome to [submit issue](https://github.com/changkun/modern-cpp-tutorial/issues) to report the `typo` error. + +- Do not hasitate to submit a principle error because it prevent wrong knowledge being propagation. +Report the error immediately by [submitting issue](https://github.com/changkun/modern-cpp-tutorial/issues) to avoid the spread of wrong knowledge. + +- If you found some part of the book is confusing, you are very welcome to [submit an issue](https://github.com/changkun/modern-cpp-tutorial/issues) for asking questions. + +- The book cannot cover the entire C++ of course, however, you are very welcome to [submit an issue](https://github.com/changkun/modern-cpp-tutorial/issues) for a suggestion if you found some important feature is missing in the book. + +## Pull Request + +"C++ 11/14/17 On the Fly" is open source so that everyone can contribute to contribute to PR. However, it is required read the following instructions carefully before submitting your pull request: + +- Before you submit your pull request, make sure that the [issue list](https://github.com/changkun/modern-cpp-tutorial/issues) already contains the problem you want to solve. If not, please refer to the **Submit Issue** section. + +- Make sure your PR has improved the `typo` error of more than 50 words, otherwise please do not submit a PR. + +- For a PR that fixes principled errors, please don't hesitate, all readers of the book are very grateful for your contribution! + +- If you would like to be a co-author of this book, please send an email to ask: `hi at changkun dot us`. + +Since this repository provides a variety of reading approaches, thus make sure you have checked all items in the following checklist: + + - [ ] If you only making changes to the main part of the book (i.e. the `book` folder), and no changes to the code snippet, then you are good to go; +- [ ] If you also change the code snippet in the main body of the book, then you need to synchronize the corresponding code snippet in the `code` folder; +- [ ] If you changes also involve the exercises, you also need to synchronize the contents of the `exercises` folder. + # 如何参与贡献 ## 提交 Issue @@ -36,36 +69,3 @@ - [ ] 只改动原书正文 `book` 下的部分内容,不涉及代码片段的修改,则无需进行修改 - [ ] 如果同时还改动了正文中的代码片段,则需要同步 `code` 文件夹下对应的代码片段 - [ ] 如果改动还涉及习题的设计,则需要同步 `exercises` 文件夹下的内容 - -# How to contribute - -## Submit Issue - -C++ 11/14/17 issue is used to track the principle description error, `typo` error, and the questions to the author of the book. - -- Usually, you may encounter typos, semantic errors, grammatical errors, and etc. These are all `typo` errors. If an error has caused some obstacles to your reading and you strongly believe that the `typo` will also affect others reading. Then you are very welcome to [submit issue](https://github.com/changkun/modern-cpp-tutorial/issues) to report the `typo` error. - -- Do not hasitate to submit a principle error because it prevent wrong knowledge being propagation. -Report the error immediately by [submitting issue](https://github.com/changkun/modern-cpp-tutorial/issues) to avoid the spread of wrong knowledge. - -- If you found some part of the book is confusing, you are very welcome to [submit an issue](https://github.com/changkun/modern-cpp-tutorial/issues) for asking questions. - -- The book cannot cover the entire C++ of course, however, you are very welcome to [submit an issue](https://github.com/changkun/modern-cpp-tutorial/issues) for a suggestion if you found some important feature is missing in the book. - -## Pull Request - -"C++ 11/14/17 On the Fly" is open source so that everyone can contribute to contribute to PR. However, it is required read the following instructions carefully before submitting your pull request: - -- Before you submit your pull request, make sure that the [issue list](https://github.com/changkun/modern-cpp-tutorial/issues) already contains the problem you want to solve. If not, please refer to the **Submit Issue** section. - -- Make sure your PR has improved the `typo` error of more than 50 words, otherwise please do not submit a PR. - -- For a PR that fixes principled errors, please don't hesitate, all readers of the book are very grateful for your contribution! - -- If you would like to be a co-author of this book, please send an email to ask: `hi at changkun dot us`. - -Since this repository provides a variety of reading approaches, thus make sure you have checked all items in the following checklist: - - - [ ] If you only making changes to the main part of the book (i.e. the `book` folder), and no changes to the code snippet, then you are good to go; -- [ ] If you also change the code snippet in the main body of the book, then you need to synchronize the corresponding code snippet in the `code` folder; -- [ ] If you changes also involve the exercises, you also need to synchronize the contents of the `exercises` folder. \ No newline at end of file diff --git a/DONATE.md b/DONATE.md index 136ae25..4a54d5c 100644 --- a/DONATE.md +++ b/DONATE.md @@ -4,16 +4,17 @@ type: about order: 1 --- +# Donate + +I would love if you support me to make the book better: + +[![](https://img.shields.io/badge/donate-PayPal-104098.svg?style=popout-square&logo=PayPal)](https://www.paypal.me/ouchangkun/4.99eur) + # 资助 如果你认为本书对你起到了帮助,并希望赞助作者,可以通过下面的二维码给予支持: |微信|支付宝| |:--:|:--:| -|![](../assets/wechat.jpg) | ![](../assets/alipay.jpg)| +|![](./assets/wechat.jpg) | ![](./assets/alipay.jpg)| -# Donate - -I would love if you support me to make the book better: - -[![](https://img.shields.io/badge/donate-PayPal-104098.svg?style=popout-square&logo=PayPal)](https://www.paypal.me/ouchangkun/4.99eur) diff --git a/README-en-us.md b/README-en-us.md deleted file mode 100644 index a9e7e0f..0000000 --- a/README-en-us.md +++ /dev/null @@ -1,53 +0,0 @@ -logo - -# C++11/14/17/20 On the Fly - -[![](https://img.shields.io/badge/language-简体中文-red.svg?style=flat-square)](./README.md) [![](https://img.shields.io/badge/language-English-blue.svg?style=flat-square)](./README-en-us.md) [![](https://img.shields.io/badge/€-donate-ff69b4.svg?style=flat-square)](./DONATE.md) [![](https://img.shields.io/badge/chat-community-667ed5.svg?style=flat-square)](./COMMUNITY.md) - -## Purpose - -The book claims "On the Fly". Its intent is to provide a comprehensive introduction to the relevant features regarding modern C++ (before 2020s). -Readers can choose interesting content according to the following table of content to learn and quickly familiarize the new features you would like to learn. -Readers should aware that all of these features are not required. It should be leart when you really need it. - -At the same time, instead of grammar-only, the book introduces the historical background as simple as possible of its technical requirements, which provides great help in understanding why these features comes out. - -In addition, The author would like to encourage that readers should be able to use modern C++ directly in their new projects and migrate their old projects to modern C++ gradually after read the book. - -## Targets - -- This book assumes that readers are already familiar with traditional C++ (i.e. C++98 or earlier), at least they do not have any difficulty in reading traditional C++ code. In other words, those who have long experience in traditional C++ and people who desire to quickly understand the features of modern C++ in a short period of time are well suited to read the book; - -- This book introduces to a certain extent of the dark magic of modern C++. However, these magics are very limited, they are not suitable for readers who want to learn advanced C++. The purpose of this book is offering a quick start for modern C++. Of course, advanced readers can also use this book to review and examine themselves on modern C++. - -## Start - -You can choose from the following reading methods: - -- [GitHub Online](./book/en-us/toc.md) -- [PDF document](./pdf/en-us/modern-cpp-tutorial.pdf) -- [Website](https://changkun.de/modern-cpp) - -## Code - -Each chapter of this book has a lot of code. If you encounter problems when writing your own code with the introductory features of the book, you might as well read the source code attached to the book. You can find the book [here](./code). All the code organized by chapter, the folder name is the chapter number. - -## Exercises - -There are few exercises At the end of each chapter of the book. It is for testing whether you can use the knowledge points in the current chapter. You can find the possible answer to the problem from [here](./exercise). The folder name is the chapter number. - -## Website - -The source code of the [website](https://changkun.de/modern-cpp) of this book can be found [here](./website), which is built by [hexo](https://hexo.io) and [vuejs](https://vuejs.org). The website provides you another way of reading the book, it is also adapts to mobile. - -## Acknowledgements - -This book was originally written in Chinese by [Changkun Ou](https://changkun.de). - -The author has limited time and language skills. If readers find any mistakes of the book or any language improvements, please feel free to open an [Issue](https://github.com/changkun/modern-cpp-tutorial/issues) or start a [Pull request](https://github.com/changkun/modern-cpp-tutorial/pulls). For detailed guidelines and checklist, please refer to [How to contribute](CONTRIBUTING.md). - -The author would be grateful to all contributors, including but not limited to [Contributors](https://github.com/changkun/modern-cpp-tutorial/graphs/contributors). - -## Licenses - -Creative Commons License
This work was written by [Ou Changkun](https://changkun.de) and licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. The code of this repository is open sourced under the [MIT license](./LICENSE). \ No newline at end of file diff --git a/README-zh-cn.md b/README-zh-cn.md new file mode 100644 index 0000000..f034d8d --- /dev/null +++ b/README-zh-cn.md @@ -0,0 +1,48 @@ +logo + +# 《高速上手 C++11/14/17/20》 + +[![](https://img.shields.io/badge/language-English-blue.svg?style=flat-square)](./README.md) [![](https://img.shields.io/badge/language-简体中文-red.svg?style=flat-square)](./README-zh-cn.md) [![](https://img.shields.io/badge/€-donate-ff69b4.svg?style=flat-square)](./DONATE.md) [![](https://img.shields.io/badge/chat-community-667ed5.svg?style=flat-square)](./COMMUNITY.md) + +## 本书目的 + +本书号称『高速上手』,从内容上对二十一世纪二十年代之前产生 C++ 的相关特性做了非常相对全面的介绍,读者可以自行根据下面的目录选取感兴趣的内容进行学习,快速熟悉需要了解的内容。这些特性并不需要全部掌握,只需针对自己的使用需求和特定的应用场景,学习、查阅最适合自己的新特性即可。 + +同时,本书在介绍这些特性的过程中,尽可能简单明了的介绍了这些特性产生的历史背景和技术需求,这为理解这些特性、运用这些特性提供了很大的帮助。 + +此外,笔者希望读者在阅读本书后,能够努力在新项目中直接使用现代 C++,并努力将旧项目逐步迁移到现代 C++。也算是笔者为推进现代 C++ 的普及贡献了一些绵薄之力。 + +## 目标读者 + +1. 本书假定读者已经熟悉了传统 C++ ,至少在阅读传统 C++ 代码上不具备任何困难。换句话说,那些长期使用传统 C++进行编码的人、渴望在短时间内迅速了解**现代 C++** 特性的人非常适合阅读本书; +2. 本书一定程度上介绍了一些现代 C++ 的**黑魔法**,但这些魔法毕竟有限,不适合希望进阶学习现代 C++ 的读者,本书的定位系**现代 C++ 的快速上手**。当然,希望进阶学习的读者可以使用本书来回顾并检验自己对 **现代 C++** 的熟悉度。 + +## 开始阅读 + +你可以选择以下几种阅读方式: + +1. [GitHub 在线](./book/zh-cn/toc.md) +2. [PDF 文档](./pdf/zh-cn/modern-cpp-tutorial.pdf) +3. [网站](https://changkun.de/modern-cpp/) + +## 相关代码 + +本书每章中都出现了大量的代码,如果你在跟随本书介绍特性的思路编写自己的代码遇到问题时,不妨读一读随书附上的源码,你可以在[这里](./code)中找到书中介绍过的全部的源码,所有代码按章节组织,文件夹名称为章节序号。 + +## 随书习题 + +本书每章最后还加入了少量难度极小的习题,仅用于检验你是否能混合运用当前章节中的知识点。你可以在[这里](exercises)找到习题的答案,文件夹名称为章节序号。 + +## 本书网站 + +本书的[网站](https://changkun.de/modern-cpp)源码可以在[这里](./website)找到,由 [hexo](https://hexo.io) 和 [vuejs](https://vuejs.org) 协同构建而成。网站旨在提供一个除 GitHub 之外的阅读方式,除了在桌面端访问之外,你也可以在移动端上阅读本书。 + +## 致谢 + +笔者时间和水平有限,如果读者发现书中内容的错误,欢迎提 [Issue](https://github.com/changkun/modern-cpp-tutorial/issues),或者直接提 [Pull request](https://github.com/changkun/modern-cpp-tutorial/pulls)。详细贡献指南请参考[如何参与贡献](CONTRIBUTING.md),由衷感谢每一位指出本书中出现错误的读者,包括但不限于 [Contributors](https://github.com/changkun/modern-cpp-tutorial/graphs/contributors)。 + +## 许可 + +知识共享许可协议 + +本书系[欧长坤](https://github.com/changkun)著,采用[知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议](http://creativecommons.org/licenses/by-nc-nd/4.0/)许可。项目中代码使用 MIT 协议开源,参见[许可](./LICENSE)。 diff --git a/README.md b/README.md index fe9ea22..80be492 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,53 @@ -logo +logo -# 《高速上手 C++11/14/17/20》 +# C++11/14/17/20 On the Fly -[![](https://img.shields.io/badge/language-%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87-red.svg?style=flat-square)](./README.md) [![](https://img.shields.io/badge/language-English-blue.svg?style=flat-square)](./README-en-us.md) [![](https://img.shields.io/badge/%C2%A5-%E8%B5%9E%E5%8A%A9-ff69b4.svg?style=flat-square)](./DONATE.md) [![](https://img.shields.io/badge/%E4%BA%A4%E6%B5%81-%E7%A4%BE%E5%8C%BA-667ed5.svg?style=flat-square)](./COMMUNITY.md) +[![](https://img.shields.io/badge/language-English-blue.svg?style=flat-square)](./README.md) [![](https://img.shields.io/badge/language-简体中文-red.svg?style=flat-square)](./README-zh-cn.md) [![](https://img.shields.io/badge/€-donate-ff69b4.svg?style=flat-square)](./DONATE.md) [![](https://img.shields.io/badge/chat-community-667ed5.svg?style=flat-square)](./COMMUNITY.md) -## 本书目的 +## Purpose -本书号称『高速上手』,从内容上对二十一世纪二十年代之前产生 C++ 的相关特性做了非常相对全面的介绍,读者可以自行根据下面的目录选取感兴趣的内容进行学习,快速熟悉需要了解的内容。这些特性并不需要全部掌握,只需针对自己的使用需求和特定的应用场景,学习、查阅最适合自己的新特性即可。 +The book claims "On the Fly". Its intent is to provide a comprehensive introduction to the relevant features regarding modern C++ (before 2020s). +Readers can choose interesting content according to the following table of content to learn and quickly familiarize the new features you would like to learn. +Readers should aware that all of these features are not required. It should be leart when you really need it. -同时,本书在介绍这些特性的过程中,尽可能简单明了的介绍了这些特性产生的历史背景和技术需求,这为理解这些特性、运用这些特性提供了很大的帮助。 +At the same time, instead of grammar-only, the book introduces the historical background as simple as possible of its technical requirements, which provides great help in understanding why these features comes out. -此外,笔者希望读者在阅读本书后,能够努力在新项目中直接使用现代 C++,并努力将旧项目逐步迁移到现代 C++。也算是笔者为推进现代 C++ 的普及贡献了一些绵薄之力。 +In addition, The author would like to encourage that readers should be able to use modern C++ directly in their new projects and migrate their old projects to modern C++ gradually after read the book. -## 目标读者 +## Targets -1. 本书假定读者已经熟悉了传统 C++ ,至少在阅读传统 C++ 代码上不具备任何困难。换句话说,那些长期使用传统 C++进行编码的人、渴望在短时间内迅速了解**现代 C++** 特性的人非常适合阅读本书; -2. 本书一定程度上介绍了一些现代 C++ 的**黑魔法**,但这些魔法毕竟有限,不适合希望进阶学习现代 C++ 的读者,本书的定位系**现代 C++ 的快速上手**。当然,希望进阶学习的读者可以使用本书来回顾并检验自己对 **现代 C++** 的熟悉度。 +- This book assumes that readers are already familiar with traditional C++ (i.e. C++98 or earlier), at least they do not have any difficulty in reading traditional C++ code. In other words, those who have long experience in traditional C++ and people who desire to quickly understand the features of modern C++ in a short period of time are well suited to read the book; -## 开始阅读 +- This book introduces to a certain extent of the dark magic of modern C++. However, these magics are very limited, they are not suitable for readers who want to learn advanced C++. The purpose of this book is offering a quick start for modern C++. Of course, advanced readers can also use this book to review and examine themselves on modern C++. -你可以选择以下几种阅读方式: +## Start -1. [GitHub 在线](./book/zh-cn/toc.md) -2. [PDF 文档](./pdf/zh-cn/modern-cpp-tutorial.pdf) -3. [网站](https://changkun.de/modern-cpp/) +You can choose from the following reading methods: -## 相关代码 +- [GitHub Online](./book/en-us/toc.md) +- [PDF document](./pdf/en-us/modern-cpp-tutorial.pdf) +- [Website](https://changkun.de/modern-cpp) -本书每章中都出现了大量的代码,如果你在跟随本书介绍特性的思路编写自己的代码遇到问题时,不妨读一读随书附上的源码,你可以在[这里](./code)中找到书中介绍过的全部的源码,所有代码按章节组织,文件夹名称为章节序号。 +## Code -## 随书习题 +Each chapter of this book has a lot of code. If you encounter problems when writing your own code with the introductory features of the book, you might as well read the source code attached to the book. You can find the book [here](./code). All the code organized by chapter, the folder name is the chapter number. -本书每章最后还加入了少量难度极小的习题,仅用于检验你是否能混合运用当前章节中的知识点。你可以在[这里](exercises)找到习题的答案,文件夹名称为章节序号。 +## Exercises -## 本书网站 +There are few exercises At the end of each chapter of the book. It is for testing whether you can use the knowledge points in the current chapter. You can find the possible answer to the problem from [here](./exercise). The folder name is the chapter number. -本书的[网站](https://changkun.de/modern-cpp)源码可以在[这里](./website)找到,由 [hexo](https://hexo.io) 和 [vuejs](https://vuejs.org) 协同构建而成。网站旨在提供一个除 GitHub 之外的阅读方式,除了在桌面端访问之外,你也可以在移动端上阅读本书。 +## Website -## 致谢 +The source code of the [website](https://changkun.de/modern-cpp) of this book can be found [here](./website), which is built by [hexo](https://hexo.io) and [vuejs](https://vuejs.org). The website provides you another way of reading the book, it is also adapts to mobile. -笔者时间和水平有限,如果读者发现书中内容的错误,欢迎提 [Issue](https://github.com/changkun/modern-cpp-tutorial/issues),或者直接提 [Pull request](https://github.com/changkun/modern-cpp-tutorial/pulls)。详细贡献指南请参考[如何参与贡献](CONTRIBUTING.md),由衷感谢每一位指出本书中出现错误的读者,包括但不限于 [Contributors](https://github.com/changkun/modern-cpp-tutorial/graphs/contributors)。 +## Acknowledgements -## 许可 +This book was originally written in Chinese by [Changkun Ou](https://changkun.de). -知识共享许可协议 +The author has limited time and language skills. If readers find any mistakes of the book or any language improvements, please feel free to open an [Issue](https://github.com/changkun/modern-cpp-tutorial/issues) or start a [Pull request](https://github.com/changkun/modern-cpp-tutorial/pulls). For detailed guidelines and checklist, please refer to [How to contribute](CONTRIBUTING.md). -本书系[欧长坤](https://github.com/changkun)著,采用[知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议](http://creativecommons.org/licenses/by-nc-nd/4.0/)许可。项目中代码使用 MIT 协议开源,参见[许可](./LICENSE)。 +The author would be grateful to all contributors, including but not limited to [Contributors](https://github.com/changkun/modern-cpp-tutorial/graphs/contributors). + +## Licenses + +Creative Commons License
This work was written by [Ou Changkun](https://changkun.de) and licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. The code of this repository is open sourced under the [MIT license](./LICENSE). \ No newline at end of file diff --git a/book/en-us/00-preface.md b/book/en-us/00-preface.md index 33de3bf..1d14c31 100644 --- a/book/en-us/00-preface.md +++ b/book/en-us/00-preface.md @@ -11,11 +11,11 @@ order: 0 ## Introduction C++ user group is a fairly large. From the advent of C++98 to the official finalization of C++11, it has accumulated over a decade. C++14/17 is an important complement and optimization for C++11, and C++20 brings this language to the door of modernization. The extended features of all these new standards are given to the C++ language. Infused with new vitality. -C++ programmers, who are still using traditional C++** (this book refers to C++98 and its previous C++ standards as traditional C++), may even amzed by the fact that they are not using the same language while reading C++11/14/17/20 code. +C++ programmers, who are still using **traditional C++** (this book refers to C++98 and its previous C++ standards as traditional C++), may even amzed by the fact that they are not using the same language while reading C++11/14/17/20 code. **Modern C++** (this book refers to C++11/14/17/20) introduces a lot of features into traditional C++, which makes the whole C++ become language that modernized. Modern C++ not only enhances the usability of the C++ language itself, but the modification of the `auto` keyword semantics gives us more confidence in manipulating extremely complex template types. At the same time, a lot of enhancements have been made to the language runtime. The emergence of Lambda expressions has made C++ have the "closure" feature of "anonymous functions", which is almost in modern programming languages ​​(such as Python/Swift/.. It has become commonplace, and the emergence of rvalue references has solved the problem of temporary object efficiency that C++ has long been criticized. -C++17 is the direction that has been promoted by the C++ community in the past three years. It also points out an important development direction of modern C++** programming. Although it does not appear as much as C++11, it contains a large number of small and beautiful languages ​​and features (such as structured binding), and the appearance of these features once again corrects our programming paradigm in C++. +C++17 is the direction that has been promoted by the C++ community in the past three years. It also points out an important development direction of **modern C++** programming. Although it does not appear as much as C++11, it contains a large number of small and beautiful languages ​​and features (such as structured binding), and the appearance of these features once again corrects our programming paradigm in C++. Modern C++ also adds a lot of tools and methods to its own standard library, such as `std::thread` at the level of the language itself, which supports concurrent programming and no longer depends on the underlying system on different platforms. The API implements cross-platform support at the language level; `std::regex` provides full regular expression support and more. C++98 has been proven to be a very successful "paradigm", and the emergence of modern C++ further promotes this paradigm, making C++ a better language for system programming and library development. Concepts provide verification on the compile-time of template parameters, further enhancing the usability of the language. diff --git a/book/en-us/01-intro.md b/book/en-us/01-intro.md index 826fde4..d0b6e8f 100644 --- a/book/en-us/01-intro.md +++ b/book/en-us/01-intro.md @@ -36,9 +36,9 @@ Before learning modern C++, let's take a look at the main features that have bee - **`register` keyword is deprecated and can be used but no longer has any practical meaning.** -- The `++` operation of the **`bool` type is deprecated.** +- **The `++` operation of the `bool` type is deprecated.** -- ** If a class has a destructor, the properties for which it generates copy constructors and copy assignment operators are deprecated.** +- **If a class has a destructor, the properties for which it generates copy constructors and copy assignment operators are deprecated.** - **C language style type conversion is deprecated (ie using `(convert_type)`) before variables, and `static_cast`, `reinterpret_cast`, `const_cast` should be used for type conversion.**