一、理解模板类型推导
- 通常表现形式
template<typename T>
void f(ParamType param);
- 参数param通常有三种形式
①按照指针或引用传递,通常不是指万能引用
②万能引用
template<typename T>
void f(T&& param); //param is now a universal reference
③常数值传递,不是指针或引用
二、
十四、noexcept(如果一个函数不会抛出异常,那这个函数应该注明noexcept)
-
C++98和C++11不会抛出异常的写法
-
noexcept会做出很大优化(编译器在抛出异常时候要保证栈上元素顺序析构,不保证析构顺序会有很大优化)
-
另外一个注意的点:容器元素在push_back的时候,优先利用移动构造函数,但是这个函数需要加上noexcept,否则发生异常数据会丢失
但是如果用效率低的拷贝构造函数,那么数据不会全丢失
- 简单利用(高层是否抛出异常取决于底层是否剖出异常)