C++14新特性
目录
C++14新特性
语言特性
二进制字面量
0b110 // 6
0b1111'1111 // 255
通用lambda表达式
参数列表支持auto
推导
[](auto& item){item =2;}
lambda捕获初始化器
原本的lambda
表达式只能捕获变量,并不能在捕获时进行修改或者初始化。
int func(int i) {return 10 * i;}
auto f = [x = func(2)](){cout << x << endl;}; // x 就是利用func(2)去进行初始化
f(); // 20
返回类型推导
c++14
可以使用auto
推导返回类型
auto func(int i){
return 10 * i;
}
decltype(auto)类型声明推导
decltype(auto)
类型指定符也能像 auto
一样推导类型。但是decltype
在推导返回类型时会保留其引用类型和const等限定符 ,而 auto
不会。
const int x = 0;
decltype(auto) x1 = x; // x1的类型是const int
int y = 1;
int& y1 = y;
decltype(auto) y2 = y1; // y2的类型是in&
// 用于函数
decltype(auto) func(const int& i){
return i; // decltype(auto) 推导的就是const int&
}
使用范围更广的constexpr
c++11
中,constexpr
用于变量类型、using
以及单个返回语句。constexpr
函数体中只能有一个返回语句,不能有局部变量,不能有控制流语句(如 if
、for
、while
等),不能有动态内存分配,不能有除基本类型外的任何类型的返回值。c++14
中,constexpr
函数体中能够有if语句、多重返回、多个返回语句、循环等最常用的语法。
constexpr int factorial(int n){
if (n < 1) {
return 1;
} else {
return n * factorial(int n - 1);
}
}
factorial(10); // 比不加修饰constexpr快100ns,300-->200
变量模板化
template<class T>
constexpr T m = T(123);
int main()
{
cout << m<int> << endl; // 123
cout << m<double> << endl; // 123
}
[[deprecate]]属性
表明函数要被废弃,可能会产生编译警告,支持自定义编译警告
[[deprecate("this function will be deprecated")]]
int add(){
return 1;
}
库特性
用户定义字面量的对于标准库类型
chrono
库支持使用h,s定义
using namespace std::chrono_literals;
auto day = 24h;
编译时整数序列
主要用于模板元编程
auto m = make_integer_sequence<size_t, 4>();
auto n = make_index_sequence<size_t, 4>();
std::make_unique创建唯一指针
make_unique
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)