-
Notifications
You must be signed in to change notification settings - Fork 1
Cpp11 transition
freundlich edited this page Dec 14, 2012
·
10 revisions
Notes in italics might not be available on MSVC.
enums: Replace all enums with enum classes, getting rid of the special "type" namespace.- Rewrite math classes (vector, dim, matrix) using variadic templates
- Rewrite signals using variadic templates
and perfect forwarding Remove unique_ptr-
Replace fcppt::container::array with std::array(mizuiro needs the fusion adaptation and std::array isn't adapted) Remove fcppt::ref and fcppt::crefReplace std::tr1::bind with std::bindReplace std::tr1::unordered_ with std::unordered- Keep using boost.chrono for now because std.chrono is broken in VC++: steady_clock generates time_points of the wrong type
Replace boost.thread with std.threadReplace boost.random with std.random (in fcppt::random, for example).-
Replace boost.type_traits with std.type_traits(boost.mpl's integer comparison structs (like equal_to) have trouble with std type traits) - Rewrite noncopyable and nonassignable with delete specifications (doesn't work in VC++)
Replace fcppt.static_assert by static_assert- We need to keep fcppt.assign to initialize containers with movable types (Furthermore, VC++'s stdlib doesn't support initializer lists, but they can at least be used with arrays)
- Use template typedefs for static math types like fcppt.math.vector.static (doesn't work in VC++)
Use the Unicode conversions in the standard in sge.charconvReplace boost/next_prior by the stdlib functions.Replace for(foo::iterator it = ...) loops by range based forRemove (and replace) fcppt::function::object- Remove fcppt::alignment in favour of alignas/alignof (only works in gcc-4.8 and maybe clang)
Replace ptr containers of types T that are noncopyable by normal containers of movable types, if T is not polymorphicReplace shared_ptrs where we can move unique_ptrsRemove SAFE_BOOL in favour of explicit operator bool- Use lambdas where appropriate, especially to replace extra function objects in detail or anonymous namespaces, or phoenix expressions