C++ Modern C++

        现代的C++,比较笼统。最近10多年的东西是不是现代的呢?我认为“时髦”这个词更准确一些。每一个年代,时髦老是标新立异的,老是被年龄大一些的人看不惯的(虽然这些人也曾经“赶过期髦”)。Modern C++就是用最时髦的东西去装饰您的代码。可是本质的东西仍是没有变。改革初期,最时髦的服饰是喇叭裤,霹雳舞手套。那时没有智能手机,时髦的人扛着一台卡带录音机招摇过市。咱们来分析一下。喇叭裤穿着也就罢了,总要穿衣服出门才文明吧?但是像乔峰同样带着音响出场是几个意思?后来时代发展了,卡带录音机逐渐变小,出现便于携带式的随身听。为了避免影响他人,出现了耳机这个配件。以后就是mp3播放器上市了,无线蓝牙耳机替代了绕脖子的音频线。智能手机出现后,mp3不见了踪迹。时尚和技术在变化,不变的是什么? 是人们对文艺和音乐的追求。程序员

       C++98 出现了模板和STL,带着这些东西上场的年轻人被老程序员侧目。std::map<int, std::<string> >::const_iterator ite = m.begin(); 是都是什么作派?世界上没有什么不能替代的东西,用C也能实现数据结构和算法。这没有任何问题,不少人一生也不习惯听着音乐处处跑(包括我)。C++11/14时代到来后,右值引用,lamda表达式,函数式编程,auto/decltype,  constexpr, 智能指针... 踊跃的出现,有什么用?若是当初没有去赶std::map<int, std::<string> >::const_iterator ite = m.begin();的时髦,天然对auto ite = m.begin();没有任何感受。(从不用随身听的人,会理解mp3的好处吗?)。若是当初对大对象传递过程当中,拷贝来拷贝去绝不怜惜效率的损失,天然对右值引用的出现无动于衷。C++就这点好处,思惟停留在1950年代,在202z年代也能活的很好。用支持C++17/20的GCC编译器,编写纯C也毫无问题。穿着中山装,使用收音机和报纸接听新闻的人也能过的颇温馨。C++17又出现了constexpr if,fold expression, structured binding...那可好了,从未接触过enable_if,模板递归,tuple的程序员开始对此嗤之以鼻了,这些都是什么鬼?算法

       说这么多,就一个意思。不随身听音乐也就是罢;随身听音乐,就从大喇叭录音机一直跟到mp3和手机。时髦不跟也罢,跟时髦,就会一直跟下去。(时髦,现代)Modern C++不跟也罢,跟就一直跟下去吧。express