首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【翻译】C++17的新特性简介

相比之下C++17的新内容要多很多,是完善的再完善 C++20由于好多特性都没被支持好,本身又属于非常大的一次变革,所以那部分就暂不翻译了 ?...新特性一览 语言新特性 类模板的模板参数推断 用auto来声明非类型的模板参数 折叠表达式 auto对花括号初始化的新推断规则 Lambda的常量表达式形式 Lambda可以值捕获this了 内联变量...double类型作为模板参数的类型,因而也不能对其进行auto推断 折叠表达式(Folding expressions) 折叠表达式是为了优化C++11引入的参数包而生的。...addOne(1) == 2); Lambda可以值捕获this了(Lambda capture this by value) 之前的时候在Lambda中捕获的this只能是引用形式的。...一个有问题的例子是对于引用捕获,Lambda要求其对象必须确实存在,但有可能到了调用的时候已经超过了目标对象的生命周期。

2.9K10

c++关键字完整列表及含义

关键字列表 关键字 解释 alignas 指定变量或类型的最小对齐要求(C++11) alignof 返回类型的对齐要求(C++11) and 逻辑与运算符的替代表示符 and_eq 位与赋值运算符的替代表示符...switch语句 case switch语句中的一个案例分支 catch 捕获异常块 char 字符类型 char16_t 16位Unicode字符(C++11) char32_t 32位Unicode...字符(C++11) class 定义一个类 compl 位非运算符的替代表示符 const 定义常量或常量表达式 constexpr 定义编译时计算的常量表达式(C++11) const_cast 移除对象的常量性...双精度浮点数类型 dynamic_cast 安全地转换指针或引用的类型 else if语句的替代条件分支 enum 定义枚举类型 explicit 阻止构造函数的隐式自动类型转换 export 模板定义的导出(C+...重新解释类型的强制类型转换 return 从函数返回值 short 短整型数据类型 signed 有符号类型修饰符 sizeof 计算类型或变量的大小 static 声明静态存储期的变量或类的静态成员 static_assert

10410

C++17常用新特性(八)---其他不常用语言特性

C++11中引入了静态断言关键字,定义格式为static_assert(表达式,"提示字符串"),主要是当表达式不成立时产生一条编译错误。...如下面的代码所示: int main() { static_assert(1!...) #define NUMBER "ONE" #elif __has_include() #define NUMBER "TWO" #endif 需要关注的是,由于它是预处理指令是不能放在源代码中的...表示初始化整型变量 auto i{42,34};//表示整形列表 auto i={42};//表示整形列表 auto i={42,34};//表示整形列表 5 十六进制浮点数字面量 使用10进制数表示浮点数时并不能准确的知道数据的保存精度...auto c = u8'v'; char b = u8'm'; 在这里需要说明的是C++不同的版本对使用u8后转换的字符类型定义是不一样的,如:在 C++17 中, u8'6' 的类型是 char,在 C+

69420

C++20新书推荐!

今天推荐一个新书,C++20的一些特性: 通过Modules淘汰了C++之前编写大程序的陈旧方式; 使用Concepts帮助创建类型安全的模板和实现灵活的模板特化; 使用Ranges彻底改变了处理数据的方式...C++20中,可使用lambda表达式捕获this方式,lambda表达式可以使用模板,某些时候不需要使用typename,结构体可以直接初始化。...概念将改变这个问题,让编程者为模板编写要求,而编译器则可以检查这个要求。...概念革新了思考和编写通用代码的方式,因为模板的要求是接口的一部分,类模板中的函数重载和特殊化可以基于概念进行,且编译器能够比较模板参数的要求与实际的模板参数,所以能得到更好的报错信息。...总之,C++20作为一个重大版本发布,又给C++带来了更多新的可能。

75010

【翻译】C++14的新特性简介

新特性一览 语言新特性 二进制字面值 泛型的Lambda表达式 初始化Lambda的捕获列表 推断返回类型 decltype(auto) 放宽对常量表达式函数的约束 变量模板 [[deprecated...(Lambda capture initializers) C14允许我们用任意的表达式对Lambda的捕获列表内容进行初始化了。...如今提供给捕获列表的名称不再需要与任何所在的局部范围的变量相关联了,而且可以向Lambda表达式输入引入新的名称了。...)>::value == 1); static_assert(std::is_same::value == 1); 放宽对常量表达式函数的约束...make_shared,C14引入了std::make_unique.由于以下几点原因std::make_unique是创建std::unique_ptr实例的推荐方式: 能避免使用到new运算符 当要求指针保持基础类型时避免代码的重复

3.9K20

每个C++开发者都应该学习和使用的C++11特性

Lambda表达式的基本语法形式如下: [capture list] (parameter list) -> return type { // 函数体 } 其中: capture list:捕获列表...可以按值捕获、按引用捕获,也可以使用&表示按引用捕获、=表示按值捕获。 parameter list:参数列表,与普通函数的参数列表类似。...以下是一些示例: Lambda表达式捕获任何外部变量,且不带参数和返回类型: [] { std::cout << "Hello, Lambda!"...表达式捕获外部变量: int x = 10; int y = 20; auto result = [&x, y] { return x + y; }(); 使用标准库算法和Lambda表达式:...static_assert 可以用于模板编程、泛型编程中对类型或常量表达式进行静态检查,帮助程序员在编译时发现潜在的问题,提高代码的可靠性和稳定性。 2.

5210

机器人CPP编程基础-03变量类型Variables Types

const:表示常量,一旦给定值就不能改变。例如const int a = 10;,a的值就不能再改变。 volatile:表示易变的,即程序无法预知该变量的值会随时发生变化。...例如: cpp复制代码 int arr[] = {1, 2, 3, 4, 5}; 通用 Lambda 捕获:C++14引入了通用 lambda 捕获,允许捕获变量,无论它们是否在作用域中。...可以使用概念来约束模板参数的类型,以便在模板实例化时确保类型符合特定的要求。这有助于提高代码的可读性和可维护性。...折叠表达式(Fold Expressions):C++20引入了折叠表达式,允许在展开二元或三元运算符时进行递归计算。这对于实现高阶函数和泛型算法非常有用。...例如,const int kConstantValue = 42; 常量表达式:使用const和字面值初始化器定义常量表达式。常量表达式必须是可以在编译时计算出结果的表达式不能包含变量或函数调用。

15620
领券