Android ndk项目在创建的时候有C++版本选择有4个选项,分别是Toolchain default, C++11,C++14,C++17。
C++是一种广泛使用的编程语言,它不断地发展和更新,以适应不同的需求和场景。C++的语言标准是由国际标准化组织(ISO)制定和发布的,它规定了C++的语法、语义、库和兼容性等方面的内容。C++的语言标准有不同的版本,每个版本都会添加一些新的特性和改进,以增强C++的功能和性能。目前,最新的C++语言标准是C++20,它于2020年发布。在此之前,有C++17(2017年发布),C++14(2014年发布),C++11(2011年发布)等等。
- Toolchain default是指使用编译工具(例如CMake)的默认设置来选择C++语言标准。不同的编译工具可能有不同的默认设置,一般来说,它们会选择一个较新的C++语言标准,以便支持更多的特性和优化。如果对C++语言标准没有特别的要求,可以直接使用Toolchain default,让编译工具自动选择合适的C++语言标准。
- C++11是一个重要的里程碑,它是C++语言标准的第一个主要更新,自从1998年发布的C++98以来。C++11添加了许多新的特性,例如移动语义、右值引用、auto类型推导、lambda表达式、nullptr、constexpr、委托构造函数、delete关键字、override和final说明符、基于范围的for循环、类型别名、用户定义的字面值、可变模板等等。C++11的设计目标是使C++更容易学习、使用和教学,提高类型安全性和性能,增加抽象机制和泛型编程的能力,考虑可用性和生态系统问题等等。
- C++14是C++11的一个小幅更新,它主要是修复了一些bug和提供了一些小的改进。C++14的新特性包括二进制字面值、函数返回类型推导、decltype(auto)、放松了constexpr函数的限制、变量模板、数字分隔符、通用lambda表达式、[[deprecated]]属性等等。
- C++17是C++14的一个较大的更新,它包含了大量的新特性和改进。C++17的新特性包括类模板支持模板参数推导、constexpr lambda、使用auto声明一个无类型的模板参数、内联变量、嵌套的命名空间、支持UTF-8字面值、折叠表达式、lambda表达式可以按值捕获this指针、移除了一些不推荐的类型和特性、添加了一些新的库类型和函数,例如std::any、std::byte、std::filesystem、std::optional、std::string_view、结构化绑定声明、构造函数的泛型推测等等。