搞定了pFind里程碑,放松下来踅摸踅摸天下大势。有段时间没跟进C++0x的进展,今天上网搜索了一下,整理出来。
C++委员会6月份刚刚在法国的Sophia Antipolis举行了会议(WG21)。会议的最大成果是确定了C++0x发布时间,漫长的投票表决过程总算接近结束。今年9月将提交委员会草案,以便公众审阅和反馈,进入ISO程序。Herb Sutter强调,9月的委员会草案就是”feature-complete C++0x“,以后的修改仅仅是bug修正和澄清。希望C++0x的这个“x”是9,而不升到A。
技术细节上,这次会议有两个最主要的features通过投票:
首先是传说中的Initializer lists提案(N2672 N2679),以后可以用更直观的方式初始化STL容器了:
vector<string> v = {“xyzzy”, “plugh”, “abracadabra” }; map<string,string> phonebook = { { “Bjarne Stroustrup (cell)”, “+1 (212) 555-1212″ }, { “Tom Petty (home)”, “+1 (858) 555-9734″ }, { “Amy Winehouse (agent)”, “+44 99 74855424″ } }; |
第二项是thread_local( N2659 )。经过近一年来的几次投票,并行机制的内存模型、原子操作和线程包装的多项提案都已经通过投票,这大概是C++0x最重要的变化。
其实每次都会投票通过几十个features,只不过大多数没引起注意,比如我无意瞅到了一项07年获得通过的提案,是Herb Sutter代表微软提交的空指针关键字nullptr (N2431) ,这就可以用nullptr替换VC++下的NULL宏,免得每次往gcc下移植都得手工加入。
这次唯一留的尾巴,大名鼎鼎的concepts(N2081),仍在等待“check in”。按照Herb Sutter的说法,这方面争议基本解决。9月份的San Francisc会议只要就此投票,即可扫清最后障碍,发布标准草案。
以上信息都依据网上来源:Bjarne Stroustrup的C++0x概述报告slices,Google的Lawrence Crowl对线程模型的报告slices, MS的Herb Sutter的BLOG、CodeGear的Alisdair Meredith的BLOG。他们都是委员会成员。另外我还找到一个旁听会议的Java程序员的BLOG,由于视角不同,难免有不少比较,比如C++委员会与JCP的异同。当然,你也可以参考正式、全面但枯燥的会议记录。
Pingback: joyfire 王乐珩 » 《The Beatles 1》和《再袭面包店》
Pingback: joyfire 王乐珩 » 《寻羊冒险记》和C++0x