Effective Modern C++ ——条款5 优先选择auto,而非显式型别声明
条款5
对于auto ,他的好处不仅仅是少打一些字这么简单。
首先在声明的时候,
使用auto会让我们养成初始化的习惯:
auto x;//编译不通过必须初始化。
再次对于auto而言,它可以让我们定义和声明那些编译器才知道的变量类型,比如说函数闭包类型。
//在c++11中 auto dere = [](const std::unique_ptr<Widget>& p1, const std::unique_ptr<Widget>& p2)
{ return *p1 > *p2; }
//c++14中
auto dere = [](const auto &p1, const auto &p2){return *p1 > *p2;}
当然你也可以用c++提供的函数指针类型实现,但是那样会很麻烦,至少会多写很多。