【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
}

  

 

posted @ 2018-07-28 19:09  番茄玛丽  阅读(194)  评论(0)    收藏  举报