【C++】11&14新特性
Linux下编译: g++ main.cpp -std=c++11
g++ mian.cpp -std=c++14
弃用:
1.字符串字面值常量赋值和初始化,用 const char * 或 auto,弃用 char *。
C11 新增:
1. noexcept 标记某个函数或表达式在运行时不会抛出异常
语法形式
1 void func() noexcept; // 不抛异常 2 void mayThrow() noexcept(false); // 明确表示可能抛异常 3 class RAII { 4 public: 5 ~RAII() noexcept; // 典型应用,如果析构函数抛出异常,在栈展开期间可能导致 std::terminate() 被调用,造成灾难性错误。 6 }; 7 8 std::vector<T> v; 9 T t; 10 v.push_back(std::move_if_noexcept(t)); //只有当 T 的移动构造是 noexcept 时才会选择移动,否则回退到拷贝
template<typename T> //结合 noexcept(expr) 实现模板条件推导
void call(T&& t) noexcept(noexcept(t.doWork())) {
t.doWork(); // 如果 doWork 是 noexcept,这里才是 noexcept
}

浙公网安备 33010602011771号