Used C++11 features

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

Jump to: navigation, search

Starting from KlayGE 4.2, some C++11 features are introduced to replace some features from Boost. KFL defines some macros based on compiler names and versions, to ensure which features are useable. Those macros are defined in KFL/Config.hpp.

C++11 Core Language Features

Language Feature Macro MSVC GCC Alternative
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
Extern templates KLAYGE_CXX11_CORE_EXTERN_TEMPLATES_SUPPORT 9.0 4.3
Explicit virtual overrides KLAYGE_CXX11_CORE_OVERRIDE_SUPPORT 11.0 4.7 #define
Generalized constant expressions KLAYGE_CXX11_CORE_CONSTEXPR_SUPPORT No 4.6
Null pointer constant KLAYGE_CXX11_CORE_NULLPTR_SUPPORT 10.0 4.6 Self-implemented 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 Core Language Features: Concurrency

C++11 Core Language Features: C99

C++11 Libraries

Name Macro MSVC GCC Alternative
algorithm (only copy_if) KLAYGE_CXX11_LIBRARY_ALGORITHM_SUPPORT 11.0 4.3 Self-implemented 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 (Must have _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 (Must have _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

Name Macro MSVC GCC Alternative
filesystem KLAYGE_TR2_LIBRARY_FILESYSTEM_V2_SUPPORT 11.0 No Boost.FileSystem
filesystem KLAYGE_TR2_LIBRARY_FILESYSTEM_V3_SUPPORT 14.0 No Boost.FileSystem

See Also

C++11 support in compilers

Used boost libraries