使用到的C++11特性

From KlayGE
Revision as of 03:26, 12 August 2014 by Gongminmin (Talk | contribs)

Jump to: navigation, search

KlayGE 4.2开始,一些C++11特性被引入代码中,部分替代了原先使用boost实现的功能。根据编译器和版本的不同,KFL会定义一些宏,来判断一个功能是否可用。这些宏都定义在KFL/Config.hpp中。

C++11核心语言功能

语言功能 MSVC GCC 替代方案
Allowing move constructors to throw [noexcept] KLAYGE_CXX11_CORE_NOEXCEPT_SUPPORT 14.0 4.6 throw()
Declared type of an expression KLAYGE_CXX11_CORE_DECLTYPE_SUPPORT 10.0 4.3 Boost.Typeof
Explicit virtual overrides KLAYGE_CXX11_CORE_OVERRIDE_SUPPORT 11.0 4.7 #define
Extern templates KLAYGE_CXX11_CORE_EXTERN_TEMPLATES_SUPPORT 9.0 4.3
Generalized constant expressions KLAYGE_CXX11_CORE_CONSTEXPR_SUPPORT No 4.6
Null pointer constant KLAYGE_CXX11_CORE_NULLPTR_SUPPORT 10.0 4.6 自己实现的null_ptr
Range-based for KLAYGE_CXX11_CORE_FOREACH_SUPPORT 11.0 4.6 Boost.Foreach
Rvalue references KLAYGE_CXX11_CORE_RVALUE_REFERENCES_SUPPORT 11.0 4.3 Boost.Move
Static assertions KLAYGE_CXX11_CORE_STATIC_ASSERT_SUPPORT 10.0 4.3 Boost.StaticAssert
Strongly-typed enums KLAYGE_CXX11_CORE_STRONGLY_TYPED_ENUMS_SUPPORT 11.0 4.4 C++98的enum
Variadic templates KLAYGE_CXX11_CORE_VARIADIC_TEMPLATES 12.0 4.3

C++11核心语言功能:并行

C++11核心语言功能:C99

C++11库

名称 MSVC GCC 替代方案
algorithm(只有用了copy_if) KLAYGE_CXX11_LIBRARY_ALGORITHM_SUPPORT 11.0 4.3 自己实现的copy_if
array KLAYGE_CXX11_LIBRARY_ARRAY_SUPPORT 10.0 4.3 Boost.Array
atomic KLAYGE_CXX11_LIBRARY_ATOMIC_SUPPORT 11.0 4.4 Boost.Atomic
chrono KLAYGE_CXX11_LIBRARY_CHRONO_SUPPORT 11.0 4.4(必须有_GLIBCXX_HAS_GTHREADS) Boost.Chrono
cstdint KLAYGE_CXX11_LIBRARY_CSTDINT_SUPPORT 10.0 4.3 Boost.Integer
functional KLAYGE_CXX11_LIBRARY_FUNCTIONAL_SUPPORT 10.0 4.3 Boost.Functional
mem_fn KLAYGE_CXX11_LIBRARY_MEM_FN_SUPPORT 12.0 No Boost.MemFn
random KLAYGE_CXX11_LIBRARY_RANDOM_SUPPORT 10.0 4.3 Boost.Random
regex KLAYGE_CXX11_LIBRARY_REGEX_SUPPORT 10.0 4.9 Boost.Regex
smart_ptr KLAYGE_CXX11_LIBRARY_SMART_PTR_SUPPORT 11.0 4.3 Boost.SmartPtr
system_error KLAYGE_CXX11_LIBRARY_SYSTEM_ERROR_SUPPORT 10.0 4.4 Boost.System
thread KLAYGE_CXX11_LIBRARY_THREAD_SUPPORT 11.0 4.4(必须有_GLIBCXX_HAS_GTHREADS) Boost.Thread
tuple KLAYGE_CXX11_LIBRARY_TUPLE_SUPPORT 10.0 4.3 Boost.Tuple
type_traits KLAYGE_CXX11_LIBRARY_TYPE_TRAITS_SUPPORT 10.0 4.3 Boost.TypeTraits
unordered KLAYGE_CXX11_LIBRARY_UNORDERED_SUPPORT 10.0 4.3 Boost.Unordered

TR2

名称 MSVC GCC 替代方案
filesystem KLAYGE_TR2_LIBRARY_FILESYSTEM_V2_SUPPORT 11.0 No Boost.FileSystem
filesystem KLAYGE_TR2_LIBRARY_FILESYSTEM_V3_SUPPORT 14.0 No Boost.FileSystem

相关内容

多种编译器对C++11的支持