转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=3274

KlayGE在2012年就启用了C++11的部分功能。但目前为止所有用到的C++11特性都要求有一个对应的C++98替代品。要么自己实现,要么用Boost的。

随着时间的推移,各个编译器对C++11的支持越来越好。KlayGE支持的所有平台上,都已经有可用的C++11编译器。实际上如果用的编译器是g++或者clang,-std=c++11都是打开的。所以其实只有Windows上的vc9/10还不能很好地支持C++11。

因为vc9已经无法编译boost,留着没啥意义。对于g++ 4.3之前的版本,或者clang 3.0之前的版本,也没什么人用,也没必要留着。这样在KlayGE支持的编译器中,不支持C++11的就剩下vc10。但至少这样就能直接使用vc10所支持的C++11特性。

所以我的计划是,在目前的开发版本(KlayGE 4.7),删除vc9、g++ 4.3-、clang 3.0-的支持。同时vc10支持的特性都可以直接使用,而不包一层。在下一个版本(KlayGE 4.8)开发的时候,删除vc10,并让vc12所支持的特性都可以直接使用。因为g++和clang所支持的特性都大于同时代的vc,所以不用担心它们。