上期节目介绍了C++11的新特性。本文介绍C++14的新特性。《函数返回值类型推导》C++14优化了函数返回值类型推导规则。先看一段代码:#includeusingnamespacestd;autofunc(inti){returni;}intmain(){cout<usingnamespacestd;templateautofunc(Tt){returnt;}intmain(){cout<constexprTpi=T(3.1415926535897932385L);intmain(){cout<<<structA{Tt;Uu;};templateusingB=A;intmain(){Bb;b.t=10;b.u=20;cout<ptr=std::make_unique();std::shared_timed_mutex和std::shared_lockC++14通过std::shared_timed_mutex和std::实现读写锁:shared_lock,保证多个线程可以同时读,但是写线程必须独立运行,写操作不能和读操作同时进行。实现如下:structThreadSafe{mutablestd::shared_timed_mutexmutex_;intvalue_;ThreadSafe(){value_=0;}intget()const{std::shared_lockloc(mutex_);returnvalue_;}voidincrease(){std::unique_locklock(mutex_);value_+=1;}};为什么是定时锁呢?因为它是可以有超时时间的,大家可以自行查看相关资料。网上有很多。std::integer_sequencetemplatevoidprint_sequence(std::integer_sequenceint_seq){std::cout<<"Thesequenceofsize"<{});return0;}输出:79251916std::integer_sequence和std::tuple的组合使用:templateautomap_filter_tuple(Ff,T&t){returnstd::make_tuple(f(std::get(t))...);}templateautomap_filter_tuple(std::index_sequence,Ff,T&t){returnstd::make_tuple(f(std::get(t))...);}templateautomap_filter_tuple(F&&f,T&t){returnmap_filter_tuple(S{},std::forward(f),t);}std::exchange直接查看代码吧:intmain(){std::vectorv;std::exchange(v,{1,2,3,4});cout<constexprTexchange(T&obj,U&&new_value){Told_value=std::move(obj);obj=std::forward(new_value);returnold_value;}即可可见给obj赋了new_value的值,但是没有给new_value赋值。相信你已经知道它和swap的区别了!std::quotedC++14引入std::quoted给字符串加双引号,直接看代码:intmain(){stringstr="helloworld";cout<