/**
\page older_changes Older Changes

\section changes_changes_to_380 3.8.0

\subsection changes_added_functionality_to_380 Added functionality

<ul>

<li>\ref fcpptcontainerbitfield
	<ul>
	<li>The output operator of #fcppt::container::bitfield::object now works on arbitrary char types.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<li>#fcppt::enum_::input, #fcppt::enum_::output and the output operator of #fcppt::enum_::array now work on arbitrary char types.</li>
	</ul>
</li>

<li>fcpptmetal
	<ul>
	<li><code>fcppt::metal::print</code> now works on arbitrary char types.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>Added #fcppt::io::narrow_string and #fcppt::io::narrow_string_locale.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_380 Changed functionality

<ul>
<li>The deprecated <code>std::result_of_t</code> has been replaced with <code>std::invoke_result_t</code>.</li>
<li>Deprecated member typedefs of <code>std::allocator</code> have been replaced with <code>std::allocator_traits</code>.</li>

<li>\ref fcpptcasts
	<ul>
	<li>#fcppt::cast::truncation_check now returns an optional.</li>
	</ul>
</li>

<li>\ref fcpptcontainerbitfield
	<ul>
	<li>#fcppt::container::bitfield::object can now only be used with enums.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<li>Enum names now use <code>std::string</code>. The function #fcppt::enum_::to_string in particular returns a <code>std::string_view</code>.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>#fcppt::math::clamp now returns an optional.</li>
	</ul>
</li>

<li>fcpptmetal
	<ul>
	<li><code>fcppt::metal::sequence_to_string</code> now returns a <code>std::string</code></li>.
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>#fcppt::error::strerror now uses <code>std::system_error</code> internally
	instead of the potentially not thread-safe <code>std::strerror</code> function.</li>
	</ul>
</li>

<li><code>fcppttime</code>
	<ul>
	<li><code>fcppt::time::gmtime</code> and <codE>fcppt::time::localtime</code> now use thread-safe versions
	of the corresponding standard C functions.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>#fcppt::version_string now returns a <code>std::string</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_380 Removed functionality

<ul>

<li>fcpptassert
	<ul>
	<li>Removed <code>FCPPT_ASSERT_THROW</code>, <code>FCPPT_ASSERT_THROW_MESSAGE</code>,
	<code>FCPPT_ASSERT_POST</code> and <code>FCPPT_ASSERT_POST_MESSAGE</code>.</li>
	</ul>
</li>

<li>\ref fcpptcasts
	<ul>
	<li>Removed <code>fcppt::cast::dynamic_cross_exn</code> and <code>fcppt::cast::dynamic_exn</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Removed <code>fcppt::container::bitfield::enum_object</code>.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<li>Removed <code>fcppt::enum_::from_int_exn</code>.</li>
	<li>Removed customization point for #fcppt::enum_::names and default implementation of #fcppt::enum_::to_string_impl.</li>
	</ul>
</li>

<li><code>fcppttime</code>
	<ul>
	<li>Removed <code>fcppt::time::ctime</code>.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Removed <code>fcppt::variant::get_exn</code>.</li>
	<li>Removed <code>fcppt::variant::types_string</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_380 Bugfixes

<ul>
<li>
Fixed a gcc-11 issue regarding parameter expansion.
</li>
</ul>

\section changes_changes_to_370 3.7.0

\subsection changes_added_functionality_to_370 Added functionality

<ul>
<li>\ref fcpptarray
	<p>New library.
	The difference between <code>std::array</code> is that
	#fcppt::array::object does not allow default construction.
	</p>
</li>

<li>\ref fcpptmathdim
	<ul>
	<li>Allow movable types.</li>
	</ul>
</li>

<li>\ref fcpptmathmatrix
	<ul>
	<li>Allow movable types.</li>
	</ul>
</li>

<li>\ref fcpptmathvector
	<ul>
	<li>Allow movable types.</li>
	</ul>
</li>

<li>fcpptmetal
	<ul>
	<li>Added <code>fcppt::metal::is_invocable</code>.</li>
	</ul>
</li>

<li>\ref fcpptparse
	<p>
	Added documentation.
	</p>
</li>

<li>\ref fcpptstrongtypedef
	<ul>
	<li>Added <code>noexcept</code> and <code>constexpr</code>.</li>
	</ul>
</li>

<li>\ref fcppttuple
	<p>New library.
	The difference between <code>std::tuple</code> is that
	#fcppt::tuple::object does not allow default construction.
	</p>
</li>
</ul>

\subsection changes_removed_functionality_to_370 Removed functionality

<ul>

<li>fcpptcontainerarray
	<p>
	This has been removed in favor of \ref fcpptarray.
	</p>
</li>

<li>fcpptcontainertuple
	<p>
	This has been removed in favor of \ref fcppttuple.
	</p>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Removed <code>fcppt::homogenous_pair</code>.</li>
	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>
	<li>Removed <code>fcppt::type_traits::is_std_array</code>.</li>
	<li>Removed <code>fcppt::type_traits::is_std_tuple</code>.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_360 3.6.0

\subsection changes_added_functionality_to_360 Added functionality

<ul>

<li>\ref fcpptfilesystem
	<ul>
	<li>Allow #fcppt::filesystem::open and #fcppt::filesystem::open_exn to open filebufs as well.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::cond.</li>
	<li>Added #FCPPT_CHAR_LITERAL.</li>
	<li>Allow more character types in #FCPPT_STRING_LITERAL.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_360 Changed functionality

<ul>

<li>\ref fcpptio
	<ul>
	<li>Changed #fcppt::io::basic_scoped_rdbuf to use a stream and a streambuf instead of two streams.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>#fcppt::math::next_power_of_2 is now the identity on powers of two.
	It will also now return 1 when called with 0.</li>
	</ul>
</li>

<li>\ref fcpptrandom
	<ul>
	<li>Use #fcppt::reference in places where classes hold on to references, namely
	in #fcppt::random::wrapper::uniform_container and #fcppt::random::variate.</li>
	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_360 Bugfixes

<ul>
<li>Fix clang-11 issues with destructor names.</li>
</ul>

\section changes_changes_to_350 3.5.0

\subsection changes_added_functionality_to_350 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Use #fcppt::algorithm::loop_break in #fcppt::algorithm::contains_if.</li>
	<li>Added #fcppt::algorithm::map_impl specialization for <code>fcppt::container::tuple::map</code>.</li>
	</ul>
</li>

<li>fcpptcontainerarray
	<ul>
	<li>Added <code>fcppt::container::array::from_range</code>.</li>
	</ul>
</li>

<li>fcpptcontainertuple
	<ul>
	<li>Added <code>fcppt::container::tuple::apply</code>.</li>
	<li>Added <code>fcppt::container::tuple::from_array</code>.</li>
	<li>Added <code>fcppt::container::tuple::init</code>.</li>
	</ul>
</li>

<li>\ref fcpptfilesystem
	<ul>
	<li>Added #fcppt::filesystem::make_directory_range.</li>
	<li>Added #fcppt::filesystem::make_recursive_directory_range and #fcppt::filesystem::recursive_directory_range.</li>
	</ul>
</li>

<li>fcpptmetal
	<ul>
	<li>Added <code>fcppt::metal::function_args</code>.</li>
	<li>Added <code>fcppt::metal::contains</code>, which returns a boolean instead of a <code>metal::number</code>.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>#fcppt::optional::sequence now works on <code>std::tuple</code>.</li>
	</ul>
</li>

<li>\ref fcpptpreprocessor
	<ul>
	<li>Added #FCPPT_PP_DISABLE_GNU_GCC_WARNING, which disables warnings on GCC but not on Clang.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>Added #fcppt::system.</li>
	<li>Added #fcppt::insert_extract_locale as a replacement for the <code>=std::locale()</code> parameters.</li>
	<li>Added variants of various functions taking a locale:
	This includes <code>fcppt::extract_from_string_locale</code>, #fcppt::from_std_string_locale, #fcppt::from_std_wstring_locale
	#fcppt::narrow_locale, #fcppt::output_to_string_locale, #fcppt::output_to_std_string_locale,
	#fcppt::output_to_std_wstring_locale, #fcppt::to_std_string_locale, #fcppt::to_std_wstring_locale and #fcppt::widen_locale.</li>
	</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::overload.</li>
	<li>Added #FCPPT_NONMOVABLE.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_350 Changed functionality

<ul>

<li>\ref fcpptfilesystem
	<ul>
	<li>Changed constructor of #fcppt::filesystem::directory_range to return an error code.</li>
	</ul>
</li>

<li>\ref fcpptlog
	<ul>
	<li>Use #fcppt::reference to pass #fcppt::log::context to #fcppt::log::object.</li>
	</ul>
</li>

<li>fcpptmetal
	<ul>
	<li><code>fcppt::metal::set::contains</code> now returns a boolean instead of a <code>metal::number</code>.</li>
	</ul>
</li>

<li>\ref fcpptsignal
	<ul>
	<li>Callbacks are now moved into signals.</li>
	</Ul>
</li>

<li>\ref fcpptsmartptr
	<ul>
	<li>Made the conversion constructor of #fcppt::shared_ptr explicit.</li>
	<li>Made the #fcppt::weak_ptr constructor from #fcppt::shared_ptr explicit.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>Removed the default <code>=std::locale()</code> parameter from
	#fcppt::extract_from_string, #fcppt::from_std_string, #fcppt::from_std_wstring
	#fcppt::narrow, #fcppt::output_to_string, #fcppt::output_to_std_string,
	#fcppt::output_to_std_wstring, #fcppt::to_std_string, #fcppt::to_std_wstring and #fcppt::widen.</li>
	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>
	<li>Removed nested <code>type</code> from <code>fcppt::type_traits::function_result</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_350 Removed functionality

<ul>

<li>\ref fcpptcasts
	<ul>
	<li>Removed <code>fcppt::cast::safe</code>.</li>
	</ul>
</li>

<li>fcpptcontainertuple
	<ul>
	<li>Removed <code>fcppt::container::tuple::type_at</code>. Use <code>std::tuple_element</code>.</li>
	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>
	<li>Removed <code>fcppt::type_traits::constructible_from</code>. Use <code>std::is_constructible</code>.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_340 3.4.0

<ul>
<li>
Replaced Brigand with Metal.
</li>
</ul>

\subsection changes_added_functionality_to_340 Added functionality

<ul>

<li>\ref fcppttypetraits
	<ul>
	<li>Added #fcppt::type_traits::safe_integral_cast.</li>
	<li>Added #fcppt::type_traits::to_bool.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::deref and #fcppt::deref_type.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_340 Changed functionality

<ul>
<li>Moved <code>fcppt::brigand::implication</code> to #fcppt::type_traits::implication.</li>
<li>Moved <code>fcppt::brigand::integral_cast</code> to #fcppt::type_traits::integral_cast.</li>
<li>Moved <code>fcppt::brigand::ceil_div</code> to #fcppt::math::ceil_div_static.</li>

<li>\ref fcpptrecord
	<ul>
	<li>#fcppt::record::object is now a variadic template.
	Removed <code>fcppt::record::variadic</code> and added #fcppt::record::from_list.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>#fcppt::variant::object is now a variadic template.
	Removed <code>fcppt::variant::variadic</code> and added #fcppt::variant::from_list.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_330 3.3.0

<ul>
<li>
fcppt now uses <code>std::filesystem</code>.
</li>
</ul>

\subsection changes_added_functionality_to_330 Added functionality

<ul>

<li>\ref fcpptrange
	<ul>
	<li>Added <code>fcppt::range::begin</code> and <code>fcppt::range::end</code> that call begin/end via ADL.</li>
	<li>Added #fcppt::range::from_pair.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_330 Removed functionality

<ul>

<li>\ref fcpptfilesystem
	<ul>
	<li>Removed <code>fcppt::filesystem::create_directory_error</code>.</li>
	</ul>
</li>

<li>Removed the fcpptsystem library.
</li>

</ul>

\section changes_changes_to_322 3.2.2

\subsection changes_bugfixes_to_322 Bugfixes

<ul>

<li>\ref fcpptsmartptr
	<ul>
	<li>Fix #fcppt::unique_ptr assignment.</li>
</li>

</ul>

\section changes_changes_to_321 3.2.1

\subsection changes_bugfixes_to_321 Bugfixes

<ul>
<li>Fix Doxygen links.</li>
</ul>

\section changes_changes_to_320 3.2.0

\subsection changes_added_functionality_to_320 Added functionality

<ul>

<li>fcpptcontainerarray
	<ul>
	<li>Added <code>fcppt::container::array::append</code> and <code>fcppt::container::array::join</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainerbitfield
	<ul>
	<li>Added <code>operator<<</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainergrid
	<ul>
	<li>Added initialization using #fcppt::container::grid::static_row.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<li>Added <code>operator<<</code> for #fcppt::enum_::array.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>Added #fcppt::string_view.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_320 Changed functionality

<ul>

<li>\ref fcpptcontainertree
	<ul>
	<li>Renamed <code>fcppt::container::tree::output</code> to <code>operator<<</code>.</li>
	</ul>
</li>

<li>\ref fcpptoptions
	<ul>
	<li>Changed #fcppt::options::error to a string.
	#fcppt::options::missing_error and <code>fcppt::options::other_error</code> were moved to #fcppt::options::parse_error.</li>
	<li>Moved <code>fcppt::options::combine_errors</code> to detail.</li>
	<li>#fcppt::options::missing_error can now return a state, making optional parsers more efficient.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_310 3.1.0

\subsection changes_added_functionality_to_310 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Allow rvalues in #fcppt::algorithm::loop_break,
	#fcppt::algorithm::loop and #fcppt::algorithm::fold.</li>
	</ul>
</li>

<li>\ref fcpptcatch
	<p>
	Output operators now recurse into Catch's output code instead
	of using <code>operator<< </code>.
	</p>
	<ul>
	<li>Added Catch output for #fcppt::record::object,
	#fcppt::strong_typedef and #fcppt::optional::object.</li>
	<li>Added #fcppt::catch_::convert.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Added <code>fcppt::container::contains</code>.</li>
	</ul>
</li>

<li>\ref fcppteither
	<ul>
	<li>Added #fcppt::either::construct.</li>
	<li>Added #fcppt::either::loop.</li>
	</ul>
</li>

<li>\ref fcpptrecord
	<ul>
	<li>Added <code>fcppt::record::enable_vararg_ctor</code>.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #FCPPT_STRING_LITERAL.</li>
	<li>Added #fcppt::recursive.</li>
	<li>Added #fcppt::make_function.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_310 Changed functionality

<ul>

<li>\ref fcppteither
	<ul>
	<li>Renamed <code>fcppt::either::fold_error</code> to #fcppt::either::sequence_error.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>#fcppt::io::stream_to_string now returns an optional.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_310 Removed functionality

<ul>

<li>\ref fcpptboost
	<ul>
	<li>Removed spirit traits.</li>
	</ul>
</li>

<li>\ref fcpptcatch
	<ul>
	<li>Removed <code>fcppt::catch_::defer</code>.</li>
	</ul>
</li>

<li>fcpptcontainertuple
	<ul>
	<li>Removed <code>fcppt::container::tuple::to_varargs</code>. Use <code>std::apply</code>.</li>
	</ul>
</li>

<li>\ref fcpptpreprocessor
	<ul>
	<li>Removed <code>FCPPT_PP_WARN_UNUSED_RESULT</code>.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_300 3.0.0

<p>
fcppt now uses <code>C++-17</code>.
</p>

\subsection changes_added_functionality_to_300 Added functionality

<ul>

<li><code>fcpptbrigand</code>
	<ul>
	<li>Added <code>fcppt::brigand::is_set</code>.</li>
	<li>Added <code>fcppt::brigand::unique</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_300 Changed functionality

<ul>
<li>\ref fcpptoptional
	<ul>
	<li>Now uses <code>std::optional</code> in its implementation.</li>
	</ul>
</li>

<li>\ref fcpptrecord
	<ul>
	<li>All labels of a record must be distinct now.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>

	Now uses <code>std::variant</code> in its implementation. This change makes the constructor
	of #fcppt::variant::object stricter,
	since it now uses <code>std::is_constructible</code>. For example, an rvalue of a type that is
	not movable cannot be used to construct a variant.
	</li>
	<li>
	Removed the assignment operator of #fcppt::variant::object that assigned
	an underlying value. Assign a new variant instead.
	</li>
	<li>
	Moved <code>fcppt/variant/less.hpp</code>, <code>fcppt/variant/equal.hpp</code>
	and <code>fcppt/variant/not_equal.hpp</code>. into <code>fcppt/variant/comparison.hpp</code>.
	</li>
	<li>All types of a variant must be distinct now.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_2100 2.10.0

\subsection changes_added_functionality_to_2100 Added functionality

<ul>

<li>\ref fcpptcasts
	<ul>
	<li>Added additional <code>constexpr</code>.</li>
	</ul>
</li>

<li>\ref fcpptconfig
	<ul>
	<li><code>external_begin.h(pp)</code> and <code>external_end.h(pp)</code> includes can now overlap.</li>
	</ul>
</li>

<li>\ref fcpptpreprocessor
	<ul>
	<li>Added #FCPPT_PP_DISABLE_CLANG_WARNING.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_2100 Changed functionality

<ul>

<li>\ref fcpptlog
	<ul>
	<li>Renamed <code>fcppt::log::_</code> to #fcppt::log::out.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_2100 Removed functionality

<ul>

<li>\ref fcpptvarious
	<ul>
	<li>Removed <code>FCPPT_NONASSIGNABLE</code>.</li>
	</ul>
</li>

</ul>


\section changes_changes_to_290 2.9.0

\subsection changes_added_functionality_to_290 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Added #fcppt::algorithm::split_string.</li>
	<li>Added #fcppt::algorithm::map_impl as a customization point for #fcppt::algorithm::map.</li>
	</ul>
</li>

<li>fcpptcontainertuple
	<ul>
	<li>Move rvalue references out of tuples regardless whether the tuples are rvalues themselves.</li>
	<li>Added <code>fcppt::container::tuple::move_element</code>.</li>
	<li>Added <code>fcppt::container::tuple::type_at</code>.</li>
	<li>Added <code>fcppt::container::tuple::types_of</code>.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>Added #fcppt::io::peek.</li>
	</ul>
</li>

<li>\ref fcpptoptions
	<ul>
	<li>Added <code>fcppt::options::indent</code> and added indentation to various parser outputs.</li>
	<li>Added <code>fcppt::options::combine_errors</code> and use it in #fcppt::options::sum.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Added #fcppt::variant::apply.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_290 Changed functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>To use #fcppt::algorithm::map on <code>std::array</code>, you have to include
	<code>fcppt/algorithm/map_array.hpp</code>.</li>
	<li>Moved <code>fcppt::algorithm::join</code> to #fcppt::container::join.</li>
	<li>Moved <code>fcppt::algorithm::key_set</code> to #fcppt::container::key_set.</li>
	<li>Moved <code>fcppt::algorithm::set_difference</code> to #fcppt::container::set_difference.</li>
	<li>Moved <code>fcppt::algorithm::set_intersection</code> to #fcppt::container::set_intersection.</li>
	<li>Moved <code>fcppt::algorithm::set_union</code> to #fcppt::container::set_union.</li>
	</ul>
</li>

<li>\ref fcpptoptions
	<ul>
	<li>Changed #fcppt::options::sum to return a record containing a variant.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>String conversions that can fail now return optionals, notably #fcppt::narrow, #fcppt::to_std_string and #fcppt::from_std_wstring.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>#fcppt::type_name, #fcppt::type_name_from_info and #fcppt::type_name_from_index now return <code>std::string</code>,</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_290 Removed functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Removed <code>fcppt::algorithm::append</code>.</li>
	</ul>
</li>

<li>\ref fcpptfilesystem
	<ul>
	<li>Removed <code>fcppt::filesystem::file_to_string</code>.</li>
	<li>Removed <code>fcppt::filesystem::size_to_size_t</code>.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>Removed <code>fcppt::output_to_std_string_convert</code>.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Removed <code>fcppt::variant::apply_unary</code>, <code>fcppt::variant::apply_binary</code> and <code>fcppt::variant::apply_ternary</code>.
	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_290 Bugfixes

<ul>

<li>
Updated catch includes to use <code>catch2/catch.hpp</code>.
</li>

<li>\ref fcpptintrusive
	<ul>
	<li>Fixed assignment of #fcppt::intrusive::base.</li>
	</ul>
</li>

<li>\ref fcpptoptions
	<ul>
	<li>Use <code>std::set</code> instead of <code>std::unordered_set</code> so that
	<code>set_union</code> actually works.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>Fixed string conversion when partial writes occur that don't write anything.</li>
	</ul>
</li>

</ul>


\section changes_changes_to_280 2.8.0

\subsection changes_general_to_280 General changes

<ul>
<li>
Replaced <code>boost.test</code> with <code>Catch2</code>.
This means that in order to build the tests (<code>-D ENABLE_TEST=ON</code>),
Catch2 is now required.
</li>
</ul>

\subsection changes_added_functionality_to_280 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Added #fcppt::algorithm::unique and #fcppt::algorithm::unique_if.</li>
	</ul>
</li>

<li>fcpptcontainerarray
	<ul>
	<li>Allow rvalues in <code>fcppt::container::array::push_back</code>.</li>
	<li>Added <code>fcppt::container::array::apply</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainergrid
	<ul>
	<li>Added #fcppt::container::grid::dim_type and #fcppt::container::grid::pos_type.</li>
	</ul>
</li>

<li>fcpptcontainertuple
	<ul>
	<li>Added <code>fcppt::container::tuple::push_back</code>.</li>
	</ul>
</li>

<li>\ref fcppteither
	<ul>
	<li>Added #fcppt::either::failure_type and #fcppt::either::success_type.</li>
	<li>Added #fcppt::either::join.</li>
	</ul>
</li>

<li>\ref fcpptiterator
	<ul>
	<li>Added <code>operator==</code> to <code>fcppt::iterator::range</code>.</li>
	</ul>
</li>

<li>\ref fcpptrange
	<ul>
	<li>Added <code>fcppt::range::size</code>.</li>
	</ul>
</li>

<li>\ref fcpptoptions
	<ul>
	<li>Added #fcppt::options::commands, which parses sub-commands.</li>
	<li>Added #fcppt::options::unit_switch and #fcppt::options::unit.</li>
	<li>Added #fcppt::options::sum.</li>
	</ul>
</li>

<li>\ref fcpptrecord
	<ul>
	<li>Added #fcppt::record::all_disjoint.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>Added <code>fcppt::output_to_std_string_convert</code>.</li>
	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>
	<li>Added #fcppt::strong_typedef_apply.</li>
	<li>Added #fcppt::strong_typedef_map.</li>
	<li>Added #fcppt::strong_typedef_tag.</li>
	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>
	<li>Added <code>fcppt::type_traits::remove_cv_ref_t</code>.</li>
	<li>Added #fcppt::type_traits::value_type.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::copy.</li>
	<li>Added #fcppt::not_.</li>
	<li>Added #fcppt::hash_combine and #fcppt::hash.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_280 Changed functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Moved <code>fcppt::algorithm::array_map</code>,
	<code>fcppt::algorithm::array_init</code>, <code>fcppt::algorithm::array_init_const</code>,
	<code>fcppt::algorithm::array_init_move</code>, <code>fcppt::algorithm::array_push_back</code>
	and <code>fcppt::container::make_array</code>
	to fcpptcontainerarray.</li>
	<li>Renamed <code>fcppt::algorithm::vararg_map</code> to <code>fcppt::container::tuple::vararg_map</code>.</li>
	</ul>
</li>

<li>fcpptassign
	<ul>
	<li>Moved <code>fcppt::assign::make_container</code> to #fcppt::container::make.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Renamed <code>fcppt::container::untuple</code> to <code>fcppt::container::tuple::to_varargs</code>.</li>
	</ul>
</li>

<li>fcpptcontainerarray
	<ul>
	<li><code>fcppt::container::array::map</code> no longer uses an explicit result type.</li>
	</ul>
</li>

<li>\ref fcpptmathdim
	<ul>
	<li>Renamed <code>fcppt::math::dim::construct</code> to #fcppt::math::dim::push_back.</li>
	</ul>
</li>

<li>\ref fcpptmathvector
	<ul>
	<li>Renamed <code>fcppt::math::vector::construct</code> to #fcppt::math::vector::push_back.</li>
	</ul>
</li>

<li>\ref fcpptoptions
	<ul>
	<li>The active and inactive values in #fcppt::options::flag must be different now.</li>
	<li>All long and short names must be distinct now.</li>
	<li>All parsers and their parameters are now passed as rvalue references.
	Use #fcppt::make_cref or #fcppt::copy to pass them.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>Renamed <code>fcppt::insert_to*_string</code> to <code>fcppt::output_to*_string</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_280 Removed functionality

<ul>

<li>Removed <code>fcppt.mpl</code>.</li>

<li>\ref fcpptalgorithm
	<ul>
	<li> Removed <code>fcppt::algorithm::array_binary_map</code>. This has been replaced by <code>fcppt::container::array::apply</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_280 Bugfixes

<ul>

<li>\ref fcpptintrusive
	<ul>
	<li>Fixed unlinking of the last element.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_270 2.7.0

\subsection changes_general_to_270 General changes

<ul>
<li>
Boost is now optional, which can be controlled by the <code>ENABLE_BOOST</code> CMake flag. It defaults
to <code>ON</code> if Boost is found. To build <code>fcppt_filesystem</code>, <code>fcppt_system</code>
or fcppt's tests, Boost is still required.
Furthermore, all Boost-specific functionality has been moved to <code>fcppt_boost</code>.
To replace <code>boost::mpl</code>, <code>Brigand</code> has been added as a dependency, which
can be obtained from <a href="https://github.com/edouarda/brigand">here</a>. It is a small, header-only
C++11 library that has no dependencies itself.</li>
<li>Removed <code>-Weffc++</code> warning. Unfortunately, this warning has become even more broken in <code>gcc-8</code>.</li>
</ul>

\subsection changes_added_functionality_to_270 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Allow <code>std::array</code> in #fcppt::algorithm::map.</li>
	<li>Allow rvalues in <code>fcppt::algorithm::array_map</code>.</li>
	</ul>
</li>

<li><code>fcpptbrigand</code>
	<p>
	New library for brigand utility functions.
	</p>
</li>

<li>\ref fcpptcasts
	<ul>
	<li>Added #fcppt::cast::promote_int.</li>
	<li>Added #fcppt::cast::to_uint_ptr.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Added #fcppt::container::map_values_ref and #fcppt::container::map_values_copy.</li>
	<li>Added #fcppt::container::insert.</li>
	<li>Added #fcppt::container::pop_front.</li>
	<li>Allow move-only types in #fcppt::container::pop_front and #fcppt::container::pop_back.</li>
	<li>Added #fcppt::container::size.</li>
	</ul>
</li>

<li>\ref fcpptintrusive
	<p>New library that is a simple replacement for <code>boost::intrusive::list</code>.
	It only supports movable types. Furthermore, an element must be initialized
	with the list it is going to be a member of.
	</p>
</li>

<li>\ref fcpptiterator
	<p>New library that provides a base class to implement iterators from
	and an iterator range.</p>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Added #fcppt::math::div.</li>
	<li>Added #fcppt::math::is_zero.</li>
	</ul>
</li>

<li>\ref fcpptmathdim
	<ul>
	<li>Added #fcppt::math::dim::binary_map.</li>
	<li>Added #fcppt::math::dim::sequence.</li>
	</ul>
</li>

<li>\ref fcpptmathmatrix
	<ul>
	<li>Added #fcppt::math::matrix::binary_map.</li>
	<li>Added #fcppt::math::matrix::map.</li>
	</ul>
</li>

<li>\ref fcpptmathvector
	<ul>
	<li>Added #fcppt::math::vector::binary_map.</li>
	<li>Added #fcppt::math::vector::sequence.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Added #fcppt::optional::sequence.</li>
	</ul>
</li>

<li>\ref fcpptrange
	<p>
	New library that implements some utility functions for ranges.
	</p>
</li>

<li>\ref fcpptrecord
	<ul>
	<li>Added #fcppt::record::element_tag_tuple.</li>
	</ul>
</li>

<li>\ref fcpptref
	<ul>
	<li>Added #fcppt::is_reference.</li>
	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>
	<li>Added <code>fcppt::type_traits::function_result</code>.</li>
	<li>Added #fcppt::type_traits::is_value.</li>
	<li>Added <code>fcppt::type_traits::is_std_tuple</code>.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::move_clear.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_270 Changed functionality

<ul>

<li>\ref fcpptcontainertree
	<ul>
	<li>Removed nonconst access to the children list.</li>
	<li>#fcppt::container::tree::object::front and #fcppt::container::tree::object::back now return optional references.</li>
	</ul>
</li>

<li>\ref fcpptlog
	<ul>
	<li>Removed <code>boost::format</code> from <code>fcppt::log::format::inserter</code>.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>#fcppt::math::ceil_div and #fcppt::math::ceil_div_signed now return optionals.</li>
	<li>#fcppt::math::mod now returns an optional.</li>
	</ul>
</li>

<li>\ref fcpptmathdim
	<ul>
	<li>All versions of <code>operator/</code> now return optionals.</li>
	</ul>
</li>

<li>\ref fcpptmathvector
	<ul>
	<li>#fcppt::math::vector::ceil_div_signed now returns an optional.</li>
	<li>#fcppt::math::vector::mod now returns an optional.</li>
	<li>#fcppt::math::vector::atan2 now returns an optional.</li>
	<li>#fcppt::math::vector::angle_between, #fcppt::math::vector::angle_between_cast,
	#fcppt::math::vector::signed_angle_between and #fcppt::math::vector::signed_angle_between_cast
	now return optionals.</li>
	<li>All versions of <code>operator/</code> now return optionals.</li>
	</ul>
</li>

<li>\ref fcpptrange
	<ul>
	<li>Moved <code>fcppt::range_hash</code> to #fcppt::range::hash.</li>
	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>
	<li>Removed <code>make_strong_typedef.hpp</code> from <code>strong_typedef.hpp</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_270 Removed functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Removed <code>fcppt::algorithm::levenshtein</code> and <code>fcppt::algorithm::shortest_levenshtein</code>,</li>
	</ul>
</li>

<li>\ref fcpptcasts
	<ul>
	<li>Removed <code>fcppt::cast::promote</code>.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Removed <code>fcppt::math::to_array_type_tpl</code>.</li>
	</ul>
</li>

<li>\ref fcpptmathdim
	<ul>
	<li>Removed <code>operator%</code>, <code>operator%=</code> and <code>operator/=</code>.</li>
	<li>Removed <code>operator+</code> and <code>operator-</code> that took a scalar.</li>
	<li>Removed unary <code>operator+</code>.</li>
	</ul>
</li>

<li>\ref fcpptmathmatrix
	<ul>
	<li>Removed <code>operator/=</code> and <code>operator/</code>.</li>
	</ul>
</li>

<li>\ref fcpptmathvector
	<ul>
	<li>Removed <code>operator%</code>, <code>operator%=</code> and <code>operator/=</code>.</li>
	<li>Removed <code>operator+</code> and <code>operator-</code> that took a scalar.</li>
	<li>Removed unary <code>operator+</code>.</li>
	</ul>
</li>

<li><code>fcpptmpl</code>
	<p>This library is in the process of being replaced by <code>fcpptbrigand></code>.</p>
</li>

<li>\ref fcpptrecord
	<ul>
	<li>Removed <code>fcppt::record::disjoint_product_tpl</code>,</li>
	<li>Removed <code>fcppt::record::element_map_tpl</code>,</li>
	<li>Removed <code>fcppt::record::element_to_label_tpl</code>,</li>
	<li>Removed <code>fcppt::record::element_to_type_tpl</code>,</li>
	<li>Removed <code>fcppt::record::element_vector_tpl</code>,</li>
	<li>Removed <code>fcppt::record::label_set_tpl</code>,</li>
	<li>Removed <code>fcppt::record::label_value_type_tpl</code>,</li>
	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>
	<li>Removed <code>operator/</code>, <code>operator/=</code>, <code>operator%</code> and <code>operator%=</code>.</li>
	<li>Removed the unary <code>operator+</code>.</li>
	<li>Removed the shift operators <code>operator<<</code>, <code>operator<<=</code>, <code>operator>></code> and <code>operator>>=</code>.</li>
	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>
	<li>Removed <code>fcppt::type_traits::is_iterable</code>, <code>fcppt::type_traits::has_iterator</code> and <code>fcppt::type_traits::has_const_iterator</code>.</li>
	<li>Removed <code>FCPPT_TYPE_TRAITS_GENERATE_HAS_TYPE</code> and <code>FCPPT_TYPE_TRAITS_GENERATE_HAS_MEMBER_FUNCTION</code>.</li>
	<li>Removed <code>fcppt::type_traits::is_iterator</code>.</li>
	<li>Removed <code>fcppt::type_traits::function_pointer_to_reference</code>.</li>
	<li>Removed <code>fcppt::type_traits::is_input_iterator</code>, <code>fcppt::type_traits::is_output_iterator</code>,
	<code>fcppt::type_traits::is_forward_iterator</code>, <code>fcppt::type_traits::bidirectional_iterator</code> and
	<code>fcppt::type_traits::is_random_access_iterator</code>.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Removed <code>fcppt::variant::types_of_tpl</code>.</li>
	</ul>
</li>

</ul>


\section changes_changes_to_260 2.6.0

\subsection changes_added_functionality_to_260 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Added <code>fcppt::algorithm::equal</code>.</li>
	<li><code>fcppt::algorithm::append</code> now also works on rvalues.</li>
	<li>#fcppt::algorithm::map now uses #fcppt::algorithm::loop, so it works on different ranges.</li>
	<li>Allow <code>fcppt::algorithm::join</code> to join maps and sets.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Added #fcppt::container::dynamic_array which is a simple array for uninitialized, dynamically-sized storage.</li>
	<li>Added #fcppt::container::output that outputs a container to a stream.</li>
	</ul>
</li>

<li>\ref fcpptcontainerbuffer
	<p>
	This sub-library adds #fcppt::container::buffer::object and utility functions which can be used to provide a buffer to external functions that write into raw memory.
	The buffer contains a read and a write area.
	</p>
</li>

<li>\ref fcpptconfig
	<ul>
	<li>Added #FCPPT_CONFIG_MSVC_VERSION_AT_LEAST.</li>
	</ul>
</li>

<li>\ref fcppteither
	<ul>
	<li>Added #fcppt::either::map_failure.</li>
	<li>Added #fcppt::either::error, #fcppt::either::no_error, <code>fcppt::either::fold_error</code> and #fcppt::either::error_from_optional.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<li>Added <code>fcppt::enum_::names</code> and <code>fcppt::enum_::names_impl</code>.
	<li>Added #fcppt::enum_::from_string and #fcppt::enum_::from_string_impl.
	<li>Added #fcppt::enum_::to_string and #fcppt::enum_::to_string_impl.
	<li>Added #fcppt::enum_::input and #fcppt::enum_::output.
	</ul>
</li>

<li>\ref fcpptfilesystem
	<ul>
	<li>Added #fcppt::filesystem::create_directory, <code>fcppt::filesystem::create_directory_error</code> and #fcppt::filesystem::create_directories_recursive.</li>
	<li>Added #fcppt::filesystem::file_size.</li>
	<li>Added <code>fcppt::filesystem::size_to_size_t</code>.</li>
	<li>Added #fcppt::filesystem::open and #fcppt::filesystem::open_exn.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>Added #fcppt::io::write_chars.</li>
	</ul>
</li>

<li>\ref fcpptmathmatrix
	<ul>
	<li>Added safe accessors for matrices up to a size of <code>4 x 4</code>.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Added #fcppt::optional::to_container.</li>
	</ul>
</li>

<li>\ref fcpptoptions
	<ul>
	<li>Output errors from the second argument as well in #fcppt::options::product.</li>
	<li>Added <code>fcppt/options/pretty_type_enum.hpp</code> that outputs all possible enumerators via #fcppt::enum_::names.</li>
	</ul>
</li>

<li>\ref fcpptref
	<ul>
	<li>Added <code>fcppt::add_reference</code>.</li>
	</ul>
</li>

<li>\ref fcpptsmartptr
	<ul>
	<li>Added #fcppt::unique_ptr_from_std.</li>
	<li>Added #fcppt::unique_ptr_dynamic_cast.</li>
	<li>Added #fcppt::shared_ptr_hash and the corresponding <code>std::hash</code> specialization.</li>
	<li>Added #fcppt::enable_shared_from_this.</li>
	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>
	<li>Added nonconst get function.</li>
	</ul>
</li>

<li>fcpptsystem
	<p>
	New library that wraps some functionality from <code>boost.system</code>.
	</p>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #FCPPT_MAIN as a name for the <code>main</code> function to support unicode arguments in Windows.</li>
	<li>Added <code>operator==</code>, <code>operator!=</code> and <code>operator<< </code> for #fcppt::unit.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_260 Changed functionality

<ul>

<li><code>CMake</code>
	<ul>
	<li><code>find_package(fcppt)</code> now adds fcppt's module path to <code>CMAKE_MODULE_PATH</code>.</li>
	<li>fcppt now uses <code>GNUInstallDirs.cmake</code> instead of its own variables.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Renamed <code>fcppt::container::raw_vector</code> to #fcppt::container::raw_vector::object.</li>
	<li>Moved comparison functions of #fcppt::container::raw_vector::object to <code>fcppt/container/raw_vector/comparison.hpp</code>.</li>
	<li>Redesigned #fcppt::container::raw_vector::object. It now only exposes essential functions and is no longer being meant as a replacement for <code>std::vector</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainergrid
	<ul>
	<li>Renamed <code>operator[]</code> of #fcppt::container::grid::object to #fcppt::container::grid::object::get_unsafe.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<p>
	Moved most functionality that is related to contiguous enums to the #fcppt::enum_ namespace.
	</p>
</li>

<li>\ref fcpptfilesystem
	<ul>
	<li><code>fcppt::filesystem::file_to_string</code> now returns #fcppt::optional_string for most errors.</li>
	<li>#fcppt::filesystem::ifstream, #fcppt::filesystem::ofstream and #fcppt::filesystem::fstream now use <code>std::basic_ifstream</code>,
	<code>std::basic_ofstream</code> and <code>std::basic_fstream</code> instead of the boost variants.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Split <code>fcppt::math::at_c</code> into #fcppt::math::vector::at, #fcppt::math::dim::at and #fcppt::math::matrix::at_r.</li>
	</ul>
</li>

<li>\ref fcpptmathdim
	<ul>
	<li>Renamed <code>operator[]</code> of #fcppt::math::dim::object to #fcppt::math::dim::object::get_unsafe.</li>
	</ul>
</li>

<li>\ref fcpptmathmatrix
	<ul>
	<li>Renamed <code>operator[]</code> of #fcppt::math::matrix::object to #fcppt::math::matrix::object::get_unsafe.</li>
	<li>Renamed <code>fcppt::math::matrix::at_c</code> to #fcppt::math::matrix::at_r_c.</li>
	<li>Renamed <code>fcppt::math::matrix::delete_row_and_column_static</code> to #fcppt::math::matrix::delete_row_and_column.</li>
	<li>#fcppt::math::matrix::row_type is now an #fcppt::math::vector::static_ instead of a <code>std::array</code>.</li>
	<li>#fcppt::math::matrix::index now uses functions that return its row and column instead of static constants.</li>
	</ul>
</li>

<li>\ref fcpptmathvector
	<ul>
	<li>Renamed <code>operator[]</code> of #fcppt::math::vector::object to #fcppt::math::vector::object::get_unsafe.</li>
	</ul>
</li>

<li>\ref fcpptoptions
	<ul>
	<li>Renamed <code>fcppt::options::custom_pretty_type</code> to #fcppt::options::pretty_type_impl.</li>
	<li>Don't output values of flags. Output operators are usually not defined or their results are meaningless to the user.</li>
	</ul>
</li>

<li>\ref fcpptsignal
	<ul>
	<li>Signals with a result now get the initial value when called instead of at construction time, which allows rvalues to be used.</li>
	</ul>
</li>

<li>\ref fcpptsmartptr
	<ul>
	<li>Moved output operator of #fcppt::shared_ptr to <code>fcppt/shared_ptr_output.hpp</code>.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Changed #fcppt::variant::dynamic_cast_ to take an MPL sequence of the types to cast instead of an MPL sequence of references.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>#fcppt::args and #fcppt::args_from_second now use #fcppt::args_char instead of <code>char</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_260 Removed functionality

<ul>

<li>\ref fcpptcontainer
	<ul>
	<li>Removed <code>fcppt::container::is_std_vector</code>.</li>
	<li>Removed <code>fcppt::container::is_raw_vector</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainergrid
	<ul>
	<li>Removed constructor taking #fcppt::no_init. The underlying container is now always a <code>std::vector</code>.</li>
	</ul>
</li>

<li>\ref fcpptfilesystem
	<ul>
	<li>Removed <code>fcppt::filesystem::exception</code>.</li>
	<li>Removed <code>fcppt::filesystem::create_directories_recursive_exn</code> and <code>fcppt::filesystem::create_directory_exn</code>.</li>
	<li>Removed <code>fcppt::filesystem::is_executable</code> which is covered by <code>boost.filesystem</code>.</li>
	</ul>
</li>

<li>\ref fcpptmathmatrix
	<ul>
	<li>Removed the dynamic version of <code>fcppt::math::matrix::delete_row_and_column</code>.</li>
	</ul>
</li>

\subsection changes_bugfixes_to_260 Bugfixes

<ul>

<li>\ref fcpptsignal
	<ul>
	<li>Don't forward arguments into signal because they have to be used multiple times.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>Fixed initialization of <code>std::mbstate_t</code> when doing character conversions.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Fixed moving of nested variants.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_251 2.5.1

\subsection changes_added_functionality_to_251 Added functionality

<ul>

<li><code>fcpptmpl</code>
	<ul>
	<li>Added <code>fcppt::mpl::sequence_to_string</code>.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Added #fcppt::variant::types_of and <code>fcppt::variant::types_of_tpl</code>.</li>
	<li>Added move semantics to <code>fcppt::variant::apply_unary</code>, <code>fcppt::variant::apply_binary</code> and <code>fcppt::variant::apply_ternary</code>.</li>
	<li>Improved the error message of <code>fcppt::variant::invalid_get</code>.</li>
	<li>Added <code>fcppt::variant::types_string</code>.</li>
	<li>Added #fcppt::variant::current_type_name.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_250 2.5.0

\subsection changes_added_functionality_to_250 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Added #fcppt::algorithm::reverse.</li>
	<li>Move rvalues in #fcppt::algorithm::map.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Added #fcppt::container::move_range and #fcppt::container::make_move_range.</li>
	<li>Added #fcppt::container::pop_back.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>Added #fcppt::io::extract which can also read objects of types that take #fcppt::no_init.</li>
	</ul>
</li>

<li>\ref fcpptlog
	<ul>
	<li>Added <code>operator<<</code> and <code>operator>></code> for #fcppt::log::level.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Added #fcppt::math::to_array_type, <code>fcppt::math::to_array_type_tpl</code>, #fcppt::math::from_array and #fcppt::math::to_array.</li>
	</ul>
</li>

<li><code>fcpptmpl</code>
	<ul>
	<li>Added <code>fcppt::mpl::set_intersection</code>.</li>
	<li>Added <code>fcppt::mpl::set_union</code>.</li>
	<li>Added <code>fcppt::mpl::set_difference</code>.</li>
	<li>Added <code>fcppt::mpl::set_symmetric_difference</code>.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Added #fcppt::optional::make_if.</li>
	<li>Added #fcppt::optional::nothing.</li>
	</ul>
</li>

<li>\ref fcpptoptions
	<p>
	New library for parsing command-line options, similar to Haskell's optparse-applicative.
	</p>
</li>

<li>\ref fcpptrecord
	<ul>
	<li>Added #fcppt::record::label_set and <code>fcppt::record::label_set_tpl</code>.</li>
	<li>Added #fcppt::record::are_disjoint.</li>
	<li>Added #fcppt::record::disjoint_product and <code>fcppt::record::disjoint_product_tpl</code>.</li>
	<li>Added #fcppt::record::multiply_disjoint.</li>
	<li>Added nonconst #fcppt::record::get and #fcppt::record::object::get.</li>
	<li>Added #fcppt::record::has_label.</li>
	<li>Added <code>fcppt::record::label_value_type_tpl</code>.</li>
	<li>Added #fcppt::record::are_equivalent.</li>
	<li>Added #fcppt::record::element_map and <code>fcppt::record::element_map_tpl</code>.</li>
	<li>Allow <code>==</code> and <code>!=</code> comparison for equivalent records.</li>
	<li>Added #fcppt::record::permute.</li>
	<li>Added #fcppt::record::map_elements and #fcppt::record::map.</li>
	<li>Added #fcppt::record::element_vector  and <code>fcppt::record::element_vector_tpl</code>.</li>
	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>
	<li>Added #fcppt::no_init constructor to #fcppt::strong_typedef.</li>
	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>
	<li>Added <code>fcppt::type_traits::constructible_from</code>.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::args_from_second.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_250 Changed functionality

<ul>

<li>\ref fcpptmath
	<ul>
	<li>Moved <code>fcppt::math::static_storage</code>,
	<code>fcppt::math::matrix::static_storage</code>,
	<code>fcppt::math::map</code> and <code>fcppt::math::binary_map</code>
	to detail.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>#fcppt::optional::alternative now evaluates its second argument only if the first is nothing.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>#fcppt::args_vector now uses #fcppt::string instead of <code>std::string</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_250 Bugfixes

<ul>

<li>\ref fcpptrecord
	<ul>
	<li>Fixed output of records to wide streams.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_241 2.4.1

\subsection changes_bugfixes_to_241 Bugfixes

<ul>

<li><code>CMake</code>
	<ul>
	<li>Set <code>CMAKE_CXX_STANDARD</code> to <code>14</code> in order to fix a bug with imported Qt targets.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_240 2.4.0

\subsection changes_added_functionality_to_240 Added functionality

<ul>

<li>\ref fcpptcasts
	<ul>
	<li>Allow nonconst references and arbitrary return types in #fcppt::cast::apply.</li>
	<li>Added #fcppt::cast::dynamic_fun and #fcppt::cast::dynamic_cross_fun.</li>
	<li>Added #fcppt::cast::dynamic_any and #fcppt::cast::dynamic_any_fun.</li>
	</ul>
</li>

<li>\ref fcpptcontainergrid
	<ul>
	<li>Added #fcppt::container::grid::resize.</li>
	</ul>
</li>

<li>\ref fcppteither
	<ul>
	<li>Added #fcppt::either::failure_opt.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Added #fcppt::math::power_of_2.</li>
	</ul>
</li>

<li>\ref fcpptref
	<ul>
	<li>Added #fcppt::reference_to_const.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Added #fcppt::variant::dynamic_cast_ which tries several dynamic casts.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_240 Changed functionality

<ul>

<li>\ref fcpptmath
	<ul>
	<li>Renamed <code>fcppt::math::generate_binary_vectors</code> to #fcppt::math::vector::bit_strings.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_240 Removed functionality

<ul>

<li>\ref fcpptcasts
	<ul>
	<li>Removed unused <code>fcppt::cast::apply_fun</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainergrid
	<ul>
	<li>Removed <code>%fcppt::container::grid::object::{rbegin, rend, cbegin, cend, crbegin, crend}</code>.</li>
	<li>Removed <code>fcppt::container::grid::object::resize</code> and <code>fcppt::container::grid::object::resize_init</code>.</li>
	<li>Removed <code>fcppt::container::grid::resize_preserve</code> and <code>fcppt::container::grid::resize_preserve_init</code>.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Removed <code>fcppt::math::step</code>.</li>
	<li>Removed <code>fcppt::math::bresenham</code> and <code>fcppt::math::bresenham_thick</code>.</li>
	</ul>
</li>

<li>\ref fcpptref
	<ul>
	<li>Removed <code>fcppt::reference<T>::get_pointer</code>.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_230 2.3.0

\subsection changes_added_functionality_to_230 Added functionality

<ul>

<li><code>CMake</code>
	<ul>
	<li>Set <code>FOLDER</code> properties on targets.</li>
	<li>Added <code>fcppt_utils_set_target_folder</code>.</li>
	<li>Added <code>fcppt_utils_add_example</code>.</li>
	</ul>
</li>

<li>\ref fcpptconfig
	<ul>
	<li>Ignore VC++ warning <code>4309</code> (overflow of a constant) in external headers.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Added <code>fcppt::container::untuple</code>.</li>
	</ul>
</li>

<li>\ref fcppteither
	<ul>
	<li>Added #fcppt::either::make_success and #fcppt::either::make_failure.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>Added #fcppt::io::widen_string.</li>
	</ul>
</li>

<li><code>fcpptmpl</code>
	<ul>
	<li>Added <code>fcppt::mpl::index_of_iterator</code>.</li>
	</ul>
</li>

<li>\ref fcpptrecord
	<p>
	New library that implements <em>generic records</em>, whose elements are accessed by unique label types.
	</p>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Added <code>fcppt/variant/comparison.hpp</code>.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::unit.</li>
	<li>#fcppt::move_if and #fcppt::move_if_rvalue now also work on rvalues.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_230 Changed functionality

<ul>

<li><code>CMake</code>
	<ul>
	<li><code>fcppt_utils_add_test</code> now gets the test directory as argument as well.</li>
	</ul>
</li>

<li>\ref fcpptalgorithm
	<ul>
	<li><code>fcppt::algorithm::vararg_map</code> now uses a fusion sequence instead of an MPL sequence.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_220 2.2.0

\subsection changes_added_functionality_to_220 Added functionality

<ul>

<li><code>CMake</code>
	<p>
	Added <em>interface libraries</em> to fcppt's exported targets. For
	example, <code>fcppt_core_interface</code> can be used to inherit the
	include paths and compile definitions from <code>fcppt_core</code>
	without linking to the library.
	</p>
	<ul>
	<li>Added <code>INCLUDE_DIRS</code> and <code>LINK_LIBS</code> to
	<code>fcppt_utils_add_dummy_target</code>.</li>
	<li>Added <code>fcppt_utils_is_path_prefix_of</code>.</li>
	</ul>
</li>

<li>\ref fcpptalgorithm
	<ul>
	<li>Added #fcppt::algorithm::fold_break.</li>
	<li>Added <code>fcppt::algorithm::equal_range</code>.</li>
	<li>Added #fcppt::algorithm::binary_search.</li>
	</ul>
</li>

<li>\ref fcpptconfig
	<ul>
	<li>Added <code>FCPPT_CONFIG_GNU_GCC_COMPILER</code> to distinguish gcc from clang.</li>
	<li>Ignore <code>-Wundefined-var-template</code> for
	<code>clang-3.9</code> in external headers.</li>
	<li>Ignore <code>-Wsuggest-override</code> in external headers.</li>
	<li>Ignore <code>-Wnull-dereference</code> for <code>gcc-6</code> in external headers.</li>
	</ul>
</li>

<li>\ref fcpptcontainerbitfield
	<ul>
	<li>Added #fcppt::container::bitfield::init.</li>
	</ul>
</li>

<li>\ref fcpptcontainertree
	<ul>
	<li>Added #fcppt::container::tree::make_pre_order.</li>
	<li>Added #fcppt::container::tree::make_to_root.</li>
	</ul>
</li>

<li>\ref fcpptfilesystem
	<ul>
	<li>Added #fcppt::filesystem::directory_range.</li>
	</ul>
</li>

<li><code>fcpptmpl</code>
	<ul>
	<li>The type of the first zero in <code>fcppt::mpl::partial_sums</code> can now be specified.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Added #fcppt::optional::to_pointer.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_220 Changed functionality

<ul>
<li><code>CMake</code>
	<ul>
	<li>Use named arguments in <code>fcppt_utils_generate_config</code>.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>Added <code>_fwd</code> headers to #fcppt::io::istream,
	#fcppt::io::ostream, #fcppt::io::istringstream,
	#fcppt::io::ostringstream and #fcppt::io::stringstream.</li>
	<li>Moved <code>fcppt::io::ifstream</code>, <code>fcppt::io::ofstream</code> and
	<code>fcppt::io::fstream</code> to #fcppt::filesystem::ifstream,
	#fcppt::filesystem::ofstream and #fcppt::filesystem::fstream.</li>
	</ul>
</li>

<li>\ref fcpptlog
	<p>
	The logging library went through a major rewrite, with the purpose
	to remove global objects.</p>
	<ul>
	<li>#fcppt::log::object now always refers to an #fcppt::log::context.</li>
	<li>Log levels are stored in #fcppt::log::context objects
	only. This way, they can be set before any log locations are
	created.</li>
	</ul>
</li>

<li>\ref fcpptcontainerbitfield
	<ul>
	<li>Renamed <code>fcppt::container::bitfield::object_from_enum</code>
	to <code>fcppt::container::bitfield::enum_object</code> and introduced
	an <code>_fwd</code> header.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_220 Removed functionality

<ul>

<li>\ref fcpptcasts
	<ul>
	<li>Removed <code>fcppt::cast::static_downcast_ptr</code>.</li>
	</ul>
</li>

</ul>

\section changes_changes_to_210 2.1.0

\subsection changes_general_to_210 General changes

<ul>
<li>
	<b>VC++ from Visual Studio 2015 Update 2</b> is now supported.
</li>
</ul>

\subsection changes_added_functionality_to_210 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Added #fcppt::algorithm::generate_n.</li>
	<li>Allow different implementations for ranges via #fcppt::algorithm::loop_break_impl.</li>
	<li>Support <code>std::tuple</code> as a range.</li>
	</ul>
</li>

<li>\ref fcpptcasts
	<ul>
	<li>Added #fcppt::cast::dynamic_cross and <code>fcppt::cast::dynamic_cross_exn</code>.</li>
	</ul>
</li>

<li>\ref fcpptconfig
	<ul>
	<li>Ignore <code>-Wfloat-conversion</code> and
	<code>-Wsign-conversion</code> for <code>gcc-6</code> in external
	headers again.</li>
	<li>Ignore <code>-Wexpansion-to-defined</code> for
	<code>clang-3.9</code> in external headers.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Added <code>fcppt::container::make_array</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainergrid
	<ul>
	<li>Added #fcppt::container::grid::make_min and #fcppt::container::grid::make_sup.</li>
	<li>Added #fcppt::container::grid::map.</li>
	<li>Made #fcppt::container::grid::pos_range and #fcppt::container::grid::pos_ref_range assignable.</li>
	<li>Added #fcppt::container::grid::apply.</li>
	</ul>
</li>

<li>\ref fcpptcontainertree
	<ul>
	<li>#fcppt::container::tree::pre_order is now
	copyable.</li>
	<li>Added #fcppt::container::tree::to_root.</li>
	</ul>
</li>

<li>\ref fcppteither
	<p>
	New library that represents sum types of <em>failure</em> and
	<em>success</em>.
	</p>
</li>

<li>\ref fcpptenum
	<ul>
	<li>Added <code>%fcppt::cast_to_enum_exn</code>.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>Added #fcppt::io::read_chars.</li>
	<li>Added #fcppt::io::get.</li>
	</ul>
</li>

<li><code>fcpptmpl</code>
	<ul>
	<li>Added <code>fcppt::mpl::flatten</code>.</li>
	<li>Added <code>fcppt::mpl::numeric_max</code>.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Added #fcppt::optional::filter.</li>
	<li>Added #fcppt::optional::apply.</li>
	<li>Added #fcppt::optional::cat.</li>
	<li>Added #fcppt::optional::make.</li>
	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>
	<li>Added #fcppt::type_traits::is_base_of that only works
	on complete types.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::move_if.</li>
	<li>Added #fcppt::args.</li>
	<li>#fcppt::cyclic_iterator can now be a random-access
	iterator.</li>
	<li>Added #fcppt::getenv.</li>
	<li>Added #FCPPT_USE.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_210 Changed functionality

<ul>

<li>\ref fcpptcasts
	<ul>
	<li>Renamed <code>fcppt::cast::try_dynamic</code> to #fcppt::cast::dynamic, and renamed
	<code>%fcppt::cast::dynamic</code> to <code>fcppt::cast::dynamic_exn</code>.</li>
	<li>#fcppt::cast::dynamic and <code>fcppt::cast::dynamic_exn</code> only work on related types now.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<li><code>%fcppt::cast_to_enum</code> now returns an optional.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Moved everything to the #fcppt::optional
	namespace.</li>
	<li>Removed optional references and replaced them with optionals to
	#fcppt::reference.</li>
	<li>Renamed <code>optional_bind_construct</code> to #fcppt::optional::map.</li>
	</ul>
</li>

<li>\ref fcpptref
	<ul>
	<li>Renamed <code>fcppt::reference_wrapper</code> to #fcppt::reference.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>#fcppt::cyclic_iterator now uses a pair to construct
	its boundaries.</li>
	<li>#FCPPT_NONCOPYABLE and
	<code>FCPPT_NONASSIGNABLE</code> now simply use <code>=delete</code> instead
	of <code>private:</code></li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_210 Removed functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Removed <code>fcppt::algorithm::shift_compare</code>.</li>
	</ul>
</li>

<li>fcpptassign
	<ul>
	<li>Removed <code>fcppt::assign::make_container_opt</code>.</li>
	<li>Removed <code>fcppt::assign::make_map</code>.</li>
	</ul>
</li>

<li>\ref fcpptcasts
	<ul>
	<li>Removed <code>%fcppt::cast::dynamic</code> for pointers.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>Removed <code>fcppt::io::read_exn</code>.</li>
	<li>Removed <code>fcppt::io::raw_container_source</code>.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Removed <code>fcppt::math::mod_assign</code>.</li>
	</ul>
</li>

<li>\ref fcpptstring
	<ul>
	<li>Removed <code>fcppt::extract_from_string_exn</code>.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Removed <code>FCPPT_DECLTYPE_SINK</code>.</li>
	<li>Removed <code>fcppt::tag_value</code>.</li>
	</ul>
</li>

</ul>



\section changes_changes_to_200 2.0.0

\subsection changes_general_to_200 General changes

<ul>

<li>
	<b><code>C++14</code> is now required.</b> This probably excludes compilers
	older than <code>gcc-5.2</code> and <code>clang-3.4</code>. However, this
	also leads to several improvements:
	<ul>
	<li>Polymorphic lambdas are now used to initialize arrays with static indices.
	This improves the safety of several algorithms, e.g. <code>matrix *
	vector</code>, <code>matrix * matrix</code> and so on, by checking for
	out-of-bounds accesses at compile-time.</li>
	<li>Heterogenous lookup is now supported. For example, you can search a
	<code>std::set<unique_ptr<int>></code> given an <code>int *</code>.</li>
	</ul>
</li>

<li>
	\ref fcppt.algorithm has been cleaned up substantially:
	<ul>
	<li>
	All <code>_exn</code> functions have been removed in favor of
	<code>%fcppt::optional_to_exception</code>.</li>
	<li>All iterator-based versions have
	been removed in favor of ranges.</li>
	<li>All algorithms can now take rvalues to support views.</li>
	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_200 Bugfixes

<ul>
<li>\ref fcpptalgorithm
	<ul>
	<li>Fixed return type of <code>fcppt::algorithm::join</code> so it
	never returns a reference.</li>
	</ul>
</li>

</ul>

\subsection changes_added_functionality_to_200 Added functionality

<ul>

<li><code>CMake</code>
	<ul>
	<li>Added <code>NO_CODE</code> flag to
	<code>fcppt_utils_add_test</code> which can be used to generate test
	cases that only consist of static asserts.</li>
	</ul>
</li>

<li>\ref fcpptalgorithm
	<ul>
	<li>Added #fcppt::algorithm::loop to express loops over
	different ranges, including MPL ranges. Also added #fcppt::algorithm::loop_break which is similar to the former but
	can break out of the loop early.</li>
	</ul>
</li>

<li>\ref fcpptbit
	<ul>
	<li> New library that makes creating bit masks and testing them a bit
	safer and less tedious. See for example #fcppt::bit::shifted_mask and #fcppt::bit::test.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Added #fcppt::container::find_opt which returns a
	reference to <code> value_type</code> instead of
	<code>mapped_type</code>.</li>
	</ul>
</li>

<li>\ref fcpptconfig
	<ul>
	<li>Ignore <code>-Wsign-compare</code> in external headers.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<li>Added <code>fcppt::mpl::enum_range</code> and <code>fcppt::mpl::enum_range_start_end</code>.<li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Added #fcppt::math::int_range and #fcppt::math::int_range_count.</li>
	</ul>
</li>

<li>\ref fcpptmathmatrix
	<ul>
	<li>Added #fcppt::math::matrix::init.</li>
	<li>Added <code>fcppt::math::matrix::at_c</code>.</li>
	<li>Added <code>
	fcppt::math::matrix::delete_row_and_column_static</code>.</li>
	</ul>
</li>

<li>\ref fcpptmathsphere
	<ul>
	<li>Added <code>fcppt/math/sphere/output.hpp</code>.</li>
	</ul>
</li>

<li><code>fcpptmpl</code>
	<ul>
	<li>Added <code>fcppt::mpl::copy</code>.</li>
	<li>Added <code>fcppt::mpl::for_each_break</code>.</li>
	<li>Added <code>fcppt::mpl::integral_cast_tpl</code>.</li>
	</ul>
</li>

<li>\ref fcpptio
	<ul>
	<li>Added #fcppt::io::expect which fails a stream if it
	cannot read the expected value.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Added <code>fcppt::optional_join</code>.</li>
	</ul>
</li>

<li>\ref fcpptsignal
	<ul>
	<li>Added #fcppt::signal::optional_auto_connection
	typedef.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Added <code>fcppt::variant::variadic</code>.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added <code>FCPPT_DECLTYPE_SINK</code> which returns
	<code>decltype</code> of an expression and also uses it. This is useful
	in polymorphic lambdas where the argument is only used for its
	type.</li>
	<li>Added #fcppt::tag_type which extracts the type of an
	#fcppt::tag.</li>
	<li>Added <code>fcppt::tag_value</code> to extract a
	default-constructed value of a tag, which is useful for integral
	constants.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_200 Changed functionality

<ul>
<li>\ref fcpptalgorithm
	<ul>
	<li>#fcppt::algorithm::sequence_iteration, #fcppt::algorithm::map_iteration and
	#fcppt::algorithm::map_iteration_second now expect their
	function to return #fcppt::algorithm::update_action
	instead of a bool.</li>
	<li>Renamed <code>%fcppt::algorithm::array_fold_static</code> to
	<code>%fcppt::algorithm::array_init</code>,
	<code>%fcppt::algorithm::enum_array_fold_static</code> to
	<code>%fcppt::algorithm::enum_array_init</code> and
	<code>%fcppt::algorithm::array_init</code> to
	<code>%fcppt::algorithm::array_init_const</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Renamed <code>fcppt::container::find_opt</code> to #fcppt::container::find_opt_mapped.</li>
	</ul>
</li>

<li>\ref fcpptcontainerbitfield
	<ul>
	<li>Simplified #fcppt::container::bitfield::object by
	removing iterator-based functions, <code>operator bool</code>,
	<code>swap</code> and <code>clear</code>.</li>
	<li>Moved comparison operators into
	<code>fcppt/container/bitfield/comparison.hpp</code>.</li>
	<li>Moved all other operators into
	<code>fcppt/container/bitfield/operators.hpp</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainertree
	<ul>
	<li>Made #fcppt::container::tree::child_position a free
	function and made its implementation safer.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<li>Removed <code>fcppt::enum_is_empty</code>. All enum ranges are now
	non-empty.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Use #fcppt::math::size_type directly for static sizes,
	instead of <code>std::integral_constant</code>. This greatly simplifies
	matching of template arguments.</li>
	</ul>
</li>

<li>\ref fcpptmathbox
	<ul>
	<li>#fcppt::math::box::object now uses a
	<code>(pos,max)</code> representation instead of
	<code>(pos,dim)</code>. This greatly simplifies a lot of algorithms on
	boxes. It also changes the interface slightly.</li>
	<li>Added #fcppt::math::box::init_dim and #fcppt::math::box::init_max to replace the former
	<code>fcppt::math::box::init</code>.</li>
	<li>Moved <code>null</code> of #fcppt::math::box::object
	to #fcppt::math::box::null.</li>
	</ul>
</li>

<li>\ref fcpptmathdim
	<ul>
	<li>Use variadic constructors for #fcppt::math::dim::object.</li>
	<li>Moved <code>null</code> of #fcppt::math::dim::object
	to #fcppt::math::dim::null.</li>
	</ul>
</li>

<li>\ref fcpptmathmatrix
	<ul>
	<li>Use variadic constructors for #fcppt::math::matrix::object which takes a parameter pack of
	#fcppt::math::matrix::row.</li>
	<li>Moved <code>identity</code> of #fcppt::math::matrix::object to #fcppt::math::matrix::identity.</li>
	</ul>
</li>

<li>\ref fcpptmathsphere
	<ul>
	<li>Moved comparison operators of #fcppt::math::sphere::object to
	<code>fcppt/math/sphere/comparison.hpp</code>.</li>
	</ul>
</li>

<li>\ref fcpptmathvector
	<ul>
	<li>Use variadic constructors for #fcppt::math::vector::object.</li>
	<li>Moved <code>null</code> of #fcppt::math::vector::object
	to #fcppt::math::vector::null.</li>
	</ul>
</li>

<li>\ref fcpptsmartptr
	<ul>
	<li>Renamed <code>fcppt::make_unique_ptr_fcppt</code> to #fcppt::make_unique_ptr.</li>
	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_200 Removed functionality

<ul>
<li><code>CMake</code>
	<ul>
	<li>Removed
	<code>BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0</code>
	which has not been used for a long time.</li>
	</ul>
</li>

<li>\ref fcpptalgorithm
	<ul>
	<li>Removed <code>fcppt::algorithm::array_fold</code> and
	<code>fcppt::algorithm::enum_array_fold</code> which were only useful
	in <code>C++11</code>.
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Removed <code>fcppt::container::find_exn</code> in favor of
	<code>%fcppt::optional_to_exception</code>.</li>
	</ul>
</li>

<li>\ref fcpptcontainergrid
	<ul>
	<li>Removed <code>fcppt::container::grid::object::at</code> in favor of
	#fcppt::container::grid::at_optional.</li>
	<li>Removed <code>fcppt::container::grid::is_square</code> which is
	covered by #fcppt::math::dim::is_quadratic.</li>
	<li>Removed <code>fcppt::container::grid::iterator_position</code>
	which was unused and probably broken.</li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<li>Removed <code>%at()</code> and <code>empty()</code> from
	<code>%fcppt::container::enum_array</code>.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Removed default constructors.</li>
	<li>Removed container-like functionality, including iterator-based
	constructors, <code>begin</code>/<code>end</code>, <code>front</code>/
	<code>back</code>, etc, and so on.</li>
	<li>Removed swap implementations because they gained nothing over
	<code>std::swap</code>.</li>
	</ul>
</li>

<li>\ref fcpptmathvector
	<ul>
	<li>Removed <code>%fcppt::math::vector::project</code> and
	<code>%fcppt::math::vector::orthogonalize</code>.</li>
	</ul>
</li>

<li>\ref fcpptsignal
	<ul>
	<li>Removed <code>fcppt::signal::scoped_connection</code> which was a
	typedef to <code>fcppt::signal::auto_connection const</code>.</li>
	</ul>
</li>

<li>\ref fcpptsmartptr
	<ul>
	<li>Removed <code>fcppt::make_unique_ptr</code> which used to create a
	<code>std::unique_ptr</code>.</li>
	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>
	<li>Removed implicit assignment from the underlying type.</li>
	<li>Removed strong typedef references.</li>
	</ul>
</li>

<li><code>fcppttime</code>
	<ul>
	<li>Removed <code>fcppt::time::parse_time</code> and
	<code>fcppt::time::parse_date</code>.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Removed <code>fcppt::variant::object::get_exn</code>. Use the free
	function <code>fcppt::variant::get_exn</code> instead.</li>
	</ul>
</li>

</ul>
\section changes_changes_to_150 Changes from 1.4.0 to 1.5.0

\subsection changes_added_functionality_to_150 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Added #fcppt::algorithm::find_opt.</li>
	<li>Added #fcppt::algorithm::index_of and
	<code>%fcppt::algorithm::index_of_enum_array</code>.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Added <code>%fcppt::optional_deref</code> which returns the
	dereferenced contents of the optional iff it is not empty. This is
	often useful when optionals contain iterators or unique pointers.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::function which is a wrapper around
	<code>%std::function</code> that cannot be null and has an explicit
	constructor.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_150 Changed functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Let #fcppt::algorithm::find_if_opt return an optional
	iterator to make it more consistent with the other similar
	algorithms.</li>
	</ul>
</li>

<li>\ref fcpptlog
	<ul>
	<li>Use #fcppt::function for <code>fcppt::log::format::function</code>.</li>
	<li>Introduced <code>fcppt::log::format::optional_function</code> to
	make it clear where a function can be missing.</li>
	<li>Changed <code>fcppt::log::parameters</code> to only consist of a
	single class.</li>
	</ul>
</li>

<li>\ref fcpptsignal
	<ul>
	<li>Use #fcppt::function instead of
	<code>%std::function</code>.</li>
	<li>Use a strong typedef for the initial value of a signal.</li>
	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_150 Bugfixes

<ul>

<li>\ref fcpptsmartptr
	<ul>
	<li>Readded #FCPPT_ASSERT_COMPLETE to #fcppt::default_deleter.</li>
	</ul>
</li>

<li>Add a missing <code>;</code> for <code>boost-1.59</code> in
<code>test/io/read_write.cpp</code>.</li>

</ul>

\section changes_changes_to_140 Changes from 1.3.0 to 1.4.0

\subsection changes_general_to_140 General changes

<ul>
<li>At least <code>CMake-3.0</code> is now required.</li>
<li>Fixed upcoming <code>clang-3.7</code> warnings when <code>std::move</code>
can be omitted from <code>return</code> statements.</li>
</ul>

\subsection changes_added_functionality_to_140 Added functionality

<ul>

<li>\ref fcpptalgorithm
	<ul>
	<li>Added <code>fcppt::algorithm::set_difference</code>.</li>
	<li>Added #fcppt::algorithm::all_of.</li>
	<li>Improve <code>reserve</code> optimization in #fcppt::algorithm::map
	by either using <code>%end() - %begin()</code> or <code>%size()</code> of the source range.</li>
	</ul>
</li>

<li>\ref fcpptcasts
	<ul>
	<li>Added #fcppt::cast::to_void_ptr.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Added #fcppt::container::maybe_front.</li>
	<li>Added #fcppt::container::maybe_back.</li>
	<li>Added <code>noexcept</code> to move constructors and assignment
	operators of <code>fcppt::container::raw_vector</code>, #fcppt::container::tree::object and #fcppt::container::grid::object.
	</li>
	<li>Added #fcppt::container::grid::at_optional.</li>
	<li>Added #fcppt::container::at_optional.</li>
	<li>Added #fcppt::container::grid::pos_range which is just
	a range over positions without a grid object.</li>
	<li>Added <code>%size</code> function to #fcppt::container::grid::pos_ref_range.</li>
	<li>Removed default constructor of #fcppt::container::tree::object.</li>
	</ul>
</li>

<li>\ref fcpptconfig
	<ul>
	<li>Ignore clang's <code>-Wunused-local-typedef</code> in external
	headers.  </li>
	</ul>
</li>

<li>\ref fcpptenum
	<ul>
	<lI>Added <code>%size</code> function to
	<code>fcppt::enum_range</code>.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Added <code>fcppt::math::at_c</code> that accesses a container
	using an integral constant as index.</li>
	<li>Added #fcppt::math::interval_distance.</li>
	<li>Added #fcppt::math::box::distance.</li>
	<li>Added #fcppt::math::vector::init,
	fcppt::math::box::init and #fcppt::math::dim::init
	.</li>
	<li>Added #fcppt::math::vector::map and #fcppt::math::dim::map.</li>
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Added <code>noexcept</code> to the move constructor and assignment
	operator.</li>
	<li> Added <code>%fcppt::optional_assign</code> which assigns to an
	optional but returns the reference to the optional's content.
	</li>
	<li>Added <code>%fcppt::optional_from_pointer</code>.</li>
	<li>Added <code>%fcppt::optional_alternative</code>.</li>
	</ul>
</li>

<li>\ref fcpptrandom
	<ul>
	<li>Added #fcppt::random::wrapper::uniform_container which
	returns elements from a container using a uniform distribution.
	</li>
	<li>Added <code>SeedSeq</code> constructor to random number generators.</li>
	</ul>
</li>

<li>\ref fcpptsmartptr
	<ul>
	<li>Added #fcppt::unique_ptr which doesn't provide a
	default constructor and is not supposed to hold a <code>nullptr</code>.</li>
	<li>Added #fcppt::unique_ptr_to_base and #fcppt::unique_ptr_to_const.</li>
	<li>Added #fcppt::default_deleter.</li>
	</ul>
</li>

<li>\ref fcppttypeiso
	<ul>
	<li>New library that has been extracted from \ref fcpptrandom. It can
	recursively pack and unpack types like strong typedefs, boost units,
	enums, and more.</li>
	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>
	<li>Added
	<code>fcppt::type_traits::function_pointer_to_reference</code>.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Added #fcppt::variant::match  function which often
	makes code more readable that otherwise would have been written using a
	unary visitation.</li>
	<li>Added <code>noexcept</code> to the move constructor and assignment
	operator.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added <code>fcppt::make_homogenous_pair</code>.</li>
	<li>Added <code>%size</code> function to #fcppt::int_range.</li>
	<li>Added #fcppt::tag.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_140 Changed functionality

<ul>

<li>FcpptCMakeUtils
	<ul>
	<li>Set <code>CMAKE_{RUNTIME,LIBRARY_ARCHIVE}_OUTPUT_DIRECTORY</code> instead
	of their deprecated versions.</li>
	</ul>
</li>

<li>\ref fcpptalgorithm
	<ul>
	<li><code>fcppt::algorithm::join</code> and
	<code>fcppt::algorithm::join_move</code> have been merged.</li>
	<li>#fcppt::algorithm::map_concat and
	<code>fcppt::algorithm::map_concat_move</code> have been merged.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Use <code>emplace</code> instead of <code>insert</code> in
	#fcppt::container::get_or_insert.</li>
	<li>Changed the constructors of #fcppt::container::grid::object. Instead of the unsafe range
	and iterator constructors, there is now a constructor that calls a
	function for every position that must be initialized.</li>
	<li>Renamed <code>%fcppt::container::grid::pos_range</code> to
	#fcppt::container::grid::pos_ref_range.</li>
	<li>#fcppt::container::grid::object uses #fcppt::no_init to make it more clear when elements might not be
	initialized.</li>
	<li>fcppt::container::grid::is_square now takes a dimension instead of
	a grid object.</li>
	</ul>
</li>

<li>\ref fcpptliteral
	<ul>
	<li>Boost Units literals are now dimensionless.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Moved #fcppt::math::box::object  comparison operators
	to <code>fcppt/math/box/comparison.hpp</code>.</li>
	<li>Removed default constructor of #fcppt::math::matrix::object.</li>
	</ul>
</li>

<li><code>fcpptmpl</code>
	<ul>
	<li>Changed <code>fcppt::mpl::for_each</code> and
	<code>fcppt::mpl::invoke_on</code> to use #fcppt::tag to call
	its function.</li>
	</ul>
</li>

<li>\ref fcpptsmartptr
	<ul>
	<li>Removed default constructor of #fcppt::shared_ptr.</li>
	<li>#fcppt::weak_ptr::lock now returns an optional shared
	ptr.</li>
	</ul>
</li>

<li>\ref fcpptrandom
	<ul>
	<li><code>fcppt::random::distribution::parameters::make_uniform_indices</code>
	now returns an optional distribution. This covers the case in which the
	container is empty.</li>
	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>
	<li>Removed <code>fcppt/strong_typedef_input.hpp</code> and
	<code>fcppt/strong_typedef_output.hpp</code> from
	<code>fcppt/strong_typedef.hpp</code>.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>The constructor of #fcppt::variant::object is now
	<code>explicit</code>.</li>
	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_140 Bugfixes

<ul>
<li>Use standard iterator categories instead of boost iterator categories. The
latter do not derive from the former and generally break algorithms that test
for them.</li>
<li>Fix <code>std::swap</code> includes to conform to <code>C++11</code>.</li>
</ul>
\section changes_changes_to_130 Changes from 1.2.0 to 1.3.0

\subsection changes_general_to_130 General changes

<ul>
<li>Ignore <code>-Wdeprecated-declarations</code> in external headers.</li>
</ul>

\subsection changes_added_functionality_to_130 Added functionality

<ul>
<li>\ref fcpptalgorithm
	<ul>
	<li>Most algorithms (for example #fcppt::algorithm::map and #fcppt::algorithm::fold ) have been extended to allow nonconst lvalue and rvalue ranges.</li>
	</ul>
</li>

<li>fcpptassert
	<ul>
	<li>Added <code>FCPPT_ASSERT_OPTIONAL_ERROR</code>  which first
	asserts that an optional is set and then evaluates to its
	contents.</li>
	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>
	<li>Added #fcppt::container::get_or_insert_with_result  which returns if the
	element was inserted.</li>
	<li>Added #fcppt::container::find_opt_iterator  which returns an optional
	iterator instead of an optional reference.</li>
	<li>Added #fcppt::container::to_reference_type, #fcppt::container::to_iterator_type,
	#fcppt::container::to_pointer_type and #fcppt::container::to_mapped_type.
	</ul>
</li>

<li>\ref fcpptoptional
	<ul>
	<li>Most functions operating on optionals have been extended to accept
	nonconst lvalues and rvalues.</li>
	<li>Added <code>%fcppt::forward_optional_get</code> which can be used
	to forward the contents of an optional if the optional itself is an
	rvalue.</li>
	<li>Added <code>%fcppt::optional_combine</code> which either chooses
	one of two optionals or combines both.</li>
	<li>Added output operator to optional.</li>
	<li>Added <code>%fcppt::maybe_multi</code> and <code>%fcppt::maybe_void_multi</code>
	which accept multiple optionals.</li>
	</ul>
</li>

<li>\ref fcpptvarious
	<ul>
	<li>Added #fcppt::const_  which is the const
	function.</li>
	<li>Added #fcppt::identity  which is the identity
	function.</li>
	<li>Added #fcppt::move_if_rvalue  which is similar to
	<code>std::foward</code> but works on two types.</li>
	<li>Added #fcppt::absurd  which is the polymorphic
	terminate function.</li>
	</ul>
</li>

<li>\ref fcpptvariant
	<ul>
	<li>Added #fcppt::variant::to_optional  which can be used
	to query the variant for a specific type.</li>
	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_130 Changed functionality

<ul>
<li>\ref fcpptoptional
	<ul>
	<li>Removed pointer semantics from optional. See \ref optional_design for a
	detailed explanation.</li>

	<li>Also removed <code>reset</code> and assignment of non-lifted values to
	optionals.</li>

	<li>Optionals that have been moved from are now always empty.</li>
	</ul>
</li>
<li>\ref fcpptvariant
	<ul>
	<li><code>get</code> has been renamed to <code>get_exn</code>.
	</ul>
</li>

<li>CMake export names are now used properly. The <code>prepare_config</code>
function is no longer needed and has been removed.</li>
</ul>
\section changes_changes_to_120 Changes from 1.1.0 to 1.2.0

\subsection changes_general_to_120 General changes

<ul>

<li>Ignore VC++ warnings about implicitly deleted move ctors and assignment
operators in external headers. This goes towards supporting VC++ again, but the
2015 preview still has issues with noexcept.</li>

</ul>

\subsection changes_added_functionality_to_120 Added functionality

<ul>

<li>Added #fcppt::algorithm::find_by_opt  and <code>%fcppt::algorithm::find_by_exn</code>.</li>

<li>Added <code>%fcppt::optional_to_exception</code>.</li>

<li>Added element_type typedef to <code>%fcppt::optional</code>.</li>

</ul>

\subsection changes_changed_functionality_to_120 Changed functionality

<ul>

<li>Changed fcppt::algorithm::array_fold_static and
fcppt::algorithm::enum_array_fold_static to take function objects that are
callable with one parameter instead of zero parameters. This also goes towards
supporting VC++ again.</li>

<li>Require cast functions from \ref fcpptcasts in fcppt::strong_typedef_construct_cast
and <code>fcppt::mpl::integral_cast</code>.</li>

</ul>

\subsection changes_removed_from_libraries_to_120 Removed functionality

<ul>

<li>Removed fcppt::io::color which had a very questionable implementation.</li>

<li>Removed fcppt::algorithm::copy_n. Use std::copy_n instead.</li>

<li>Removed fcppt::math::is_rational which was unused.</li>

<li>Removed fcppt::number_multiplexer which was undocumented.</li>

<li>Removed fcppt::time::sleep. Use std::this_thread::sleep_for instead.</li>

</ul>

\subsection changes_bugfixes_to_120 Bugfixes

<ul>

<li>Fixed cmake-3.1.1 warnings about quoting in if statements.</li>

<li>Fixed structure_cast functions in math to actually use their conversion
functions instead of static_cast.</li>

<li>Int ranges where end < begin are now empty.</li>

</ul>

\section changes_changes_to_110 Changes from 1.0.0 to 1.1.0

\subsection changes_general_to_110 General changes

<ul>

<li>enable_ifs that checked for type constraints were replaced by
static_asserts.</li>

</ul>

\subsection changes_added_functionality_to_110 Added functionality

<ul>

<li>Added FCPPT_DONT_EXPORT option to cmake. This option is useful if modules
are found via add_subdirectory.</li>

<li>\ref fcpptcasts
	<ul>
	<li>Added function objects of some casts to fcppt.cast.</li>
	</ul>
</li>

<li>\ref fcpptconfig
	<ul>
	<li>Added #FCPPT_CONFIG_CLANG_VERSION_AT_LEAST and #FCPPT_CONFIG_GCC_VERSION_AT_LEAST.</li>

	<li>Ignore float conversion and inconsistent override warnings in
	external headers.</li>
	</ul>
</li>

<li>\ref fcpptmath
	<ul>
	<li>Added fcppt::math::vector::to_unsigned,
	fcppt::math::vector::to_signed and fcppt::math::vector::to_dim. Similar
	functions were added to fcppt::math::dim.</li>
	</ul>
</ul>

\subsection changes_changed_functionality_to_110 Changed functionality

<ul>

<li>Changed fcppt::algorithm::find_exn and fcppt::algorithm::find_if_exn to
take the exception as a parameter.</li>

<li>Changed structure_cast functions of fcppt::math to require a cast function
as template parameter.</li>

<li>Forward headers were added to vector/static.hpp, dim/static.hpp,
matrix/static.hpp, sphere/circle.hpp and box/rect.hpp.</li>

</ul>

\subsection changes_removed_from_libraries_to_110 Removed functionality

<ul>

<li>Removed array_hash which was a duplicate of fcppt::range_hash.</li>

<li>Removed fcppt::math::vector::slerp.</lI>

<li>Removed fcppt::algorithm::exception and fcppt::algorithm::element_not_found.</li>

</ul>

\subsection changes_bugfixes_to_110 Bugfixes

<ul>

<li>Added missing ${} for cmake-3.1 in fcppt_utils_handle_so_version.</li>

<li>Added const_iterator typedef to fcppt::container::tree::pre_order.</li>

</ul>

\section changes_changes_to_100 Changes from 0.12.0 to 1.0.0

\subsection changaes_general_to_100 General changes

<ul>

<li>fcppt now uses C++11 which implies that non-conforming compilers are no
longer supported.</li>

</ul>

\subsection changes_new_libraries_to_100 New Libraries

<ul>

<li>\ref fcpptcasts
	<ul>

	<li>Added fcppt.casts which includes casts to replace <code>static_cast</code>.</li>

	</ul>
</li>

<li>\ref fcpptenum
	<ul>

	<li>Added fcppt::enum_max_value, fcppt::enum_size and
	fcppt::cast_to_enum.</li>

	<li>Added fcppt::container::enum_array.</li>

	<li>Added fcppt::enum_range.</li>

	<li>Added fcppt::runtime_enum.</li>

	<li>Added fcppt::algorithm::enum_array_fold and
	fcppt::algorithm::enum_array_fold_static.</li>

	</ul>
</li>

<li>\ref fcpptliteral
	<ul>

	<li>Added fcppt::literal.</li>

	</ul>
</li>

<li>\ref fcpptref
	<ul>

	<li>Added fcppt::reference_wrapper which supports incomplete types.</li>

	</ul>
</li>

</ul>

\subsection changes_added_functionality_to_100 Added functionality

<ul>

<li>CMake
	<ul>

	<li>Allow to externally modify fcppt's .so version.</li>

	</ul>
</li>

<li>\ref fcpptalgorithm
	<ul>

	<li>Added fcppt::algorithm::map_concat and
	fcppt::algorithm::map_concat_move.</li>

	<li>Added fcppt::algorithm::array_push_back.</li>

	<li>Added fcppt::algorithm::find_if_exn for ranges.</li>

	<li>Added fcppt::algorithm::fold for ranges.</li>

	<li>Added fcppt::algorithm::repeat.</li>

	<li>Added fcppt::algorithm::map_optional.</li>

	<li>Added fcppt::algorithm::join_move.</li>

	<li>Added fcppt::algorithm::map_iteration.</li>

	<li>Added fcppt::algorithm::sequence_iteration.</li>

	<li>Added fcppt::algorithm::array_fold and
	fcppt::algorithm::array_fold_static.</li>

	<li>Added fcppt::algorithm::array_init and
	fcppt::algorithm::array_init_move.</li>

	<li>Added fcppt::algorithm::find_if_opt.</li>

	</ul>
</li>

<li>fcpptassign
	<ul>

	<li>Added fcppt::assign::make_container_opt.</li>

	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>

	<li>fcppt::container::raw_vector is now movable.</li>

	<li>Added initializer list constructor to fcppt::container::raw_vector.</li>

	<li>Added fcppt::container::find_exn.</li>

	<li>Added fcppt::container::find_opt.</li>

	<li>Added fcppt::container::array_hash.</li>

	<li>Added fcppt::container::get_or_insert.</li>

	</ul>
</li>

<li>\ref fcpptcontainerbitfield
	<ul>

	<li>Added fcppt::container::bitfield::underlying_value.</li>

	<li>Added array constructor to fcppt::container::bitfield::object.</li>

	<li>Added initializer list constructors to
	fcppt::container::bitfield::object.</li>

	<li>Added hash to fcppt::container::bitfield::object.</li>

	</ul>
</li>


<li>\ref fcpptcontainergrid
	<ul>

	<li>Added range constructor for fcppt::container::grid::object.</li>

	<li>fcppt::container::grid::object is now movable.</li>

	<li>Added fcppt::container::grid::pos.</li>

	<li>Added fcppt::container::grid::clamp_pos and fcppt::container::grid::clamp_signed_pos.</li>

	<li>Added fcppt::container::grid::neumann_neighbors.</li>

	<li>Added fcppt::container::grid::in_range_dim.</li>

	<li>Added fcppt::container::grid::moore_neighbors.</li>

	<li>Added fcppt::container::grid::spiral_iterator.</li>

	</ul>
</li>

<li>\ref fcpptcontainertree
	<ul>

	<li>fcppt::container::tree::object is now movable.</li>

	<li>Added fcppt::container::tree::map.</li>

	<li>Added fcppt::container::tree::level.</li>

	</ul>
</li>

<li>\ref fcpptfilesystem
	<ul>

	<li>Added fcppt::filesystem::num_subpaths.</li>

	<li>Added fcppt::filesystem::strip_prefix.</li>

	<li>Added fcppt::filesystem::normalize.</li>

	</ul>
</li>

<li>\ref fcpptio
	<ul>

	<li>Added fcppt::io::scoped_rdbuf.</li>

	</ul>
</li>

<li>\ref fcpptlog
	<ul>

	<li>Added FCPPT_LOG_DEFINE_OBJECT.</li>

	<li>Added fcppt::log::activate_levels_recursive.</li>

	<li>Added fcppt::log::deactivate_levels_recursive.</li>

	<li>Added fcppt::log::context::transfer_to.</li>

	<li>Added fcppt::log::new_sink.</li>

	<li>Added fcppt::log::print_all_locations.</li>

	</ul>
</li>

<li>\ref fcpptmath
	<ul>

	<li>Math operations are asymmetric now (e.g. multiplying a vector of
	meters by a vector of seconds).</li>

	<li>Added fcppt::math::ceil_div_signed.</li>

	<li>Added hashing function to fcppt::math::vector::object,
	fcppt::math::dim::object and fcppt::math::matrix::object.</li>

	<li>Added fcppt::math::vector::distance.</li>

	<li>Added fcppt::math::bresenham and fcppt::math::bresenham_thick.</li>

	<li>Added scalar addition, subtraction and modulus to
	fcppt::math::vector::object and fcppt::math::dim::object.</li>

	</ul>
</li>

<li><code>fcpptmpl</code>
	<ul>

	<li>Generalized <code>fcppt::mpl::invoke_on</code> by adding <code>fcppt::mpl::runtime_index</code>.</li>

	</ul>
</li>

<li>\ref fcpptoptional
	<ul>

	<li>fcppt::optional is now movable.</li>

	<li>Added fcppt::optional_ref_compare.</li>

	<li>Added fcppt::optional_string typedef.</li>

	<li>Added operator< to fcppt::optional.</li>

	<li>Added fcppt::optional_bind.</li>

	<li>Added fcppt::optional_bind_construct.</li>

	<li>Added fcppt::from_optional.</li>

	<li>Added fcppt::maybe and fcppt::maybe_void.</li>

	</ul>
</li>

<li>\ref fcpptrandom
	<ul>

	<li>Random has been improved to allow other types in distributions
	(e.g. strong typedefs).</li>

	<li>Added fcppt::random::make_variate.</li>

	<li>Added fcppt::random::distribution::parameters::make_uniform_indices.</li>

	<li>Added fcppt::random::generator::mt19937.</li>

	<li>Added constructor to fcppt::random::variate which takes the
	parameters of the distribution.</li>

	</ul>
</li>

<li>\ref fcpptsignal
	<ul>

	<li>fcppt::signal::object is now movable.</li>

	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>

	<li>fcppt::strong_typedef is now movable.</li>

	</ul>
</li>

<li>\ref fcpptvariant
	<ul>

	<li>fcppt::variant::object is now movable.</li>

	<li>Added fcppt::variant::compare.</li>

	<li>Added operator< for fcppt::variant::object.</li>

	</ul>
</li>

<li>\ref fcpptvarious
	<ul>

	<li>Added fcppt::range_hash.</li>

	<li>Added fcppt::int_range that also works with strong typedefs.</li>

	</ul>
</li>


</ul>

\subsection changes_changed_functionality_to_100 Changed functionality

<ul>

<li>General
	<ul>

	<li>Remove consts on return types that have move constructors.</li>

	<li>Added override to all overriding functions.</li>

	</ul>
</li>

<li>\ref fcpptalgorithm
	<ul>

	<li>fcppt::algorithm::map now also works with movable types.</li>

	<li>Improved fcppt::algorithm::map by reserving the result's size, if
	possible.</li>

	<li>Allow multi argument fcppt::algorithm::join.</li>

	</ul>
</li>

<li>fcpptassign
	<ul>

	<li>fcppt.assign is now move only. Use initializer lists for all other
	cases.</li>

	</ul>
</li>

<li>\ref fcpptcasts
	<ul>

	<li>Moved most cast functions to the cast namespace.</li>

	</ul>
</li>

<li>\ref fcpptcontainergrid
	<ul>

	<li>Allow fcppt::container::grid::resize_preserve_init to be used with
	types without a default constructor.</li>

	</ul>
</li>

<li>\ref fcpptcontainertree
	<ul>

	<li>fcppt::container::tree::object stores its children move efficiently
	by not using unique_ptr anymore.</li>

	</ul>
</li>

<li>\ref fcpptlog
	<ul>

	<li>fcppt::log::level_stream is now copyable.</li>

	<li>fcppt.log headers have been split to conform to the include what
	you use style.</li>

	<li>fcppt.log is now a distinct library.</li>

	</ul>
</li>

<li>\ref fcpptmath
	<ul>

	<li>Use template aliases for math types.</li>

	<li>Changed fcppt::math::vector::fill and fcppt::math::dim::fill to
	take the vector or dim as template argument.</li>

	</ul>
</li>

<li> \ref fcpptsignal
	<ul>

	<li>fcppt::signal::connection is now inline, making fcppt.signal
	header-only.</li>

	</ul>
</li>

</ul>

\subsection changes_removed_from_libraries_to_100 Removed functionality

<ul>

<li>Features made obsolete by C++11
	<ul>

	<li>Removed SAFE_BOOL which can be replaced by explicit conversion
	operators.</li>

	<li>Removed fcppt::assign::make_array which can be replaced by
	initializer lists.</li>

	<li>Removed fcppt::signal::connection_manager which can be replaced by
	fcppt::signal::connection_container.</li>

	<li>Removed fcppt::scoped_ptr<T> which can be replaced by
	<code>std::unique_ptr<T> const</code>.</li>

	<li>Removed fcppt::make_auto_ptr.</li>

	<li>Removed fcppt.alignment which is replaced by alignas and
	alignof.</li>

	<li>Removed fcppt::container::array. Use std::array instead.</li>

	<li>Removed fcppt::type_info which is replaced by
	<code>std::type_index</code>.</li>

	<li>Removed workarounds.hpp which applied to pre-C++-11 compilers
	only.</li>

	<li>Removed fcppt::container::ptr functions and
	fcppt::algorithm::ptr_container_ease and
	fcppt::algorithm::ptr_container_erase_if. Ptr containers should be
	replaced by containers of unique ptrs.</li>

	</ul>
</li>

<li>Others
	<ul>

	<li>Removed fcppt::variant::recursive. Recursive variants are inefficient.</li>

	<li>Removed fcppt.chrono.asio. Asio now supports std::chrono durations and time
	points.</li>

	<li>Removed dynamic math classes that we didn't have a usecase for.</li>

	<li>Removed fcppt::algorithm::copy_if. fcppt::algorithm::map_optional can be
	used instead.</li>

	<li>Removed fcppt::container::map which was incomplete and never
	documented.</li>

	<li>Removed fcppt::log::global which was unused.</li>

	<li>Removed FOREACH_ENUMERATOR. Use fcppt::make_enum_range instead.</li>

	<li>Removed FCPPT_TRY_DYNAMIC_CAST. Use fcppt::cast::try_dynamic instead.</li>

	<li>Removed fcppt::math::quaterion which was unused.</li>

	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_100 Bugfixes

<ul>

<li>CMake
	<ul>

	<li>Fix cmake paths so that fcppt can be used via
	add_subdirectory.</li>

	<li>Fixed linking to Boost found by testing on Fedora.</li>

	<li>Fixed FcpptCMakeUtils to not set anything globally.</li>

	</ul>
</li>

<li>\ref fcpptmath
	<ul>

	<li>Fixed comparison of different math objects (e.g. a vector and a vector view).</li>

	</ul>
</li>

<li>\ref fcpptoptional
	<ul>

	<li>Fixed a bug in fcppt::optional::operator=.</li>

	</ul>
</li>

<li>\ref fcpptvariant
	<ul>

	<li>Fixed fcppt::variant::object::operator= when construction
	throws.</li>

	</ul>
</li>

</ul>
\section changes_changes_to_012 Changes from 0.11.1 to 0.12.0

\subsection changaes_general_to_012 General changes

<ul>

<li>Expose cmake targets from the build directory and when installing. This
should make it a lot easier to use fcppt from other cmake based projects. See
\ref installation_usage_using_fcppt </li>

<li>Some updates for VC++11, mostly warning fixes.</li>

<li>Some updates for gcc-4.8 trunk, also mostly warning fixes.</li>

</ul>

\subsection changes_added_functionality_to_012 Added functionality

<ul>

<li>Automatically set <code>CMAKE_INSTALL_LIBDIR</code> which some
distributions set to handle multilib.</li>

<li>Expose fcppt::math::is_static_storage</li>

<li>Added fcppt::math::box::expand and fcppt::math::box::shrink</li>

<li>Added fcppt::math::box::extend_bounding_box</li>

<li>Added fcppt::container::tree::depth</li>

<li>Added fcppt::algorithm::join to join two containers into a new one</li>

<li>Added typedefs for <code>N</code> and <code>M</code> template parameters
for matrix</li>

<li>Added fcppt::assign::make_map as a convenience wrapper for
fcppt::assign::make_container so that you don't have to call
<code>std::make_pair</code></li>

<li>Added <code>fcppt::mpl::all_of</code></li>

<li>Added fcppt::math::step</li>

<li>Added fcppt::math::matrix::transform_point and fcppt::math::matrix::transform_direction to multiply a 4x4 matrix by a 3-dimensinal point or direction vector, respectively.</li>

<li>Added fcppt::math::matrix::exponential_pade to calculate the exponential of a matrix using the Pade algorithm.</li>

<li>Added fcppt::math::matrix::logarithm to calculate the logarithm of a matrix.</li>

</ul>

\subsection changes_removed_from_libraries_to_012 Removed functionality

<ul>

<li>Removed <code>include_windows.hpp</code> from public includes</li>

<li>Removed <code>fcppt.thread</code>. The purpose of <code>fcppt.thread</code>
was to provide sleeping with a steady clock and to call terminate on joinable
threads upon destruction. Both issues have been fixed in
<code>Boost.Thread</code> as of <code>boost-1.52.0</code></li>

</ul>

\subsection changes_bugfixes_to_012 Bugfixes

<ul>

<li>Fixed a bug in fcppt::unique_ptr::reset </li>

<li>Fixed assigning of math views (like matrix's row view)</li>

<li>Reduced smart pointer include dependencies</li>

<li>Don't use <code>-pthread</code> if not necessary</li>

<li>Prefer newer boost versions over older ones. We also don't set
<code>Boost_ADDITIONAL_VERSIONS</code> anymore.</li>

</ul>

\section changes_changes_to_011_1 Changes from 0.11 to 0.11.1

This release is mainly a bugfix release.

<ul>

<li>Some documentation fixes.</li>

<li>fcppt::algorithm::levenshtein and fcppt::algorithm::shortest_levenshtein
now support boost.range and not only containers.</li>

<li>Added FCPPT_PP_CONST, FCPPT_PP_PURE and FCPPT_PP_WARN_UNUSED_RESULT.</li>

<li>Added missing template keywords for clang-3.1</li>

<li>Added fcppt::math::interpolation::perlin_fifth_degree function (along with
the corresponding functor) which implements Ken Perlin's noise interpolation
function.</li>

<li>Added fcppt::container::bitfield::object::get and
fcppt::container::bitfield::object::static_size for easy integration into
other APIs.</li>

<li>Ignore <code>-Wextra-semi</code> in Boost headers for clang-3.2 trunk</li>

<li>Fixed type problems in bitfield. The size type is now the same as the enum
type. The difference type is its signed counterpart.</li>

<li>Enabled more warnings in clang if available, namely <code>-Wundef</code>,
<code>-Wimplicit-fallthrough</code>, <code>-Wunneeded-member-function</code>,
<code>-Wunused-member-function</code>,
<code>-Wconditional-uninitialized</code>,
<code>-Wunreachable-code</code>.</li>

<li>Updates for doxygen-1.8.1</li>

<li>Updates for boost-1.50</li>

<li>Made fcppt <code>-Wunused-local-typedefs</code>-proof.</li>

</ul>

\section changes_changes_to_011 Changes from 0.10 to 0.11

\subsection changaes_general_to_011 General changes

<ul>

<li>Introduced new headers <code>fcppt/config/external_begin.hpp</code> and
<code>fcppt/config/external_end.hpp</code> that are used around external
includes and disable a lot of warnings. This way it was possible for us to
enable many more warnings for fcppt, especially in VC++.</li>

<li>Removed convenience headers that included everything in a subsystem. They
are not considered good style anyway.</li>

<li>Removed trailing whitespaces in the code.</li>

<li>Don't use constants with internal linkage anymore.</li>

<li>Parts of fcppt that require additional libraries to link to are now split
into their own libraries, namely <code>fcppt_filesystem</code> and
<code>fcppt_thread</code>.</li>

</ul>

\subsection changes_added_functionality_to_011 Added functionality

\subsubsection changes_new_libraries_to_011 New Libraries

<ul>

<li>Added a new fcpptassert "assert" framework</li>

<li>Added fcppt::null_ptr which can be used for null pointers to objects.</li>

</ul>

\subsubsection changes_additions_to_libraries_to_011 Additions to existing libraries

<ul>

<li>\ref fcpptalgorithm
	<ul>

	<li>Added fcppt::algorithm::key_set</li>

	<li>Added fcppt::algorithm::set_union</li>

	<li>Added fcppt::algorithm::copy_if</li>

	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>

	<li>Added fcppt::container::grid::iterator_position</li>

	<li>Added fcppt::container::grid::is_square</li>

	<li>Added fcppt::container::grid::interpolate</li>

	</ul>
</li>

<li>\ref fcpptexport
	<ul>

	<li>Added support for explicit instantiations of template functions and
	classes.</li>

	</ul>
</li>

<li>\ref fcpptmath
	<ul>

	<li>Added fcppt::math::vector::mod</li>

	<li>Added componentwise_equal functions to replace the removed
	implicit epsilon comparison.</li>

	</ul>
</li>

<li>\ref fcpptio
	<ul>

	<li>Added fcppt::io::read_exn</li>

	</ul>
</li>

<li>\ref fcpptlog
	<ul>

	<li>The log library has been redesigned, see \ref
	changes_changed_functionality_to_011</li>

	<li>Added fcppt::log::format::time_stamp</li>

	</ul>
</li>

<li><code>fcpptmpl</code>
	<ul>

	<li>Added <code>fcppt::mpl::contains_if</code>.</li>

	<li>Added <code>fcppt::mpl::integral_cast</code>.</li>

	</ul>
</li>

<li>\ref fcpptoptional
	<ul>

	<li>Support optional references.</li>

	<li>Added fcppt::dynamic_optional_cast, fcppt::static_optional_cast and
	fcppt::const_optional_cast to cast between optional references.</li>

	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>

	<li>Added fcppt::strong_typedef_construct_cast</li>

	</ul>
</li>

<li>\ref fcppttypetraits
	<ul>

	<li>Added fcppt::type_traits::is_random_access_iterator,
	fcppt::type_traits::is_bidirectional_iterator,
	fcppt::type_traits::is_forward_iterator,
	fcppt::type_traits::is_input_iterator and
	fcppt::type_traits::is_output_iterator.</li>

	</ul>
</li>

<li>\ref fcpptvariant
	<ul>

	<li>Added a free fcppt::variant::get function.</li>

	<li>Added nonconst variant visitation using fcppt::ref</li>

	</ul>
</li>

<li>\ref fcpptvarious
	<ul>

	<li>Added FCPPT_FOREACH_ENUMERATOR_START_END </li>

	</ul>
</li>

</ul>

\subsection changes_changed_functionality_to_011 Changed functionality

<ul>

<li>Renamed every template named <code>basic</code> to
<code>object</code>.</li>

<li>\ref fcpptcasts
	<ul>

	<li>fcppt::sn_cast has been renamed to fcppt::safe_numeric_cast. Also,
	it has been changed to forbid any conversions that can lead to data
	loss.</li>

	<li>fcppt::truncation_check_cast has been improved.</li>

	</ul>
</li>

<li>\ref fcpptcontainer
	<ul>

	<li>fcppt::container::bitfield::object's constructor is now
	explicit.</li>

	</ul>
</li>

<li>\ref fcpptendianness
	<ul>

	<li>fcppt::endianness has been reworked. Most of the functions have
	been replaced by fcppt::endianness::convert, see \ref
	changes_removed_functionality_to_011 </li>

	</ul>
</li>

<li>\ref fcpptfilesystem
	<ul>

	<li>fcppt::filesystem now uses the boost types directly, because only
	<code>boost filesystem v3</code> is supported now. Also, a lot of now
	unnecessary functions have been removed, see \ref
	changes_removed_functionality_to_011 </li>

	</ul>
</li>

<li>\ref fcpptio
	<ul>

	<li>fcppt::io::read now returns an optional.</li>

	</ul>
</li>

<li>\ref fcpptmath
	<ul>

	<li>Renamed fcppt::math::vector::signed_angle to
	fcppt::math::vector::signed_angle_between.</li>

	<li>Renamed fcppt::math::next_pow_2 to
	fcppt::math::next_power_of_2.</li>

	<li>Renamed fcppt::math::vector::signed_angle_cast to
	fcppt::math::vector::signed_angle_between_cast.</li>

	<li>Renamed <code>fcppt/math/log.hpp</code> to
	<code>fcppt/math/log2.hpp</code></li>

	<li>Split fcppt::math::box::stretch into
	fcppt::math::box::stretch_absolute and
	fcppt::math::box::stretch_relative</li>

	</ul>
</li>

<li>\ref fcpptlog
	<ul>

	<li>Redesigned the logger library that makes it possible to declare
	global loggers and enable and disable them at runtime easily.</li>

	<li>Formatters are now functions instead of classes.</li>

	<li>Renamed fcppt::log::parameters::all to
	fcppt::log::parameters::object.</li>

	</ul>
</li>

<li>\ref fcpptoptional
	<ul>

	<li>The constructor of optionals is now explicit.</li>

	</ul>
</li>

<li>\ref fcpptrandom
	<ul>

	<li>fcppt::random has been completely redesigned. Is is now a wrapper
	around <code>boost.random</code> that forbids copying of generators and
	disables all default parameters.</li>

	</ul>
</li>

<li>\ref fcpptsmartptr
	<ul>

	<li>The deleters are no longer template-template parameters. Instead,
	they are normal template parameters now.</li>

	</ul>
</li>

<li>\ref fcpptstring
	<ul>

	<li>fcppt::io::cout, etc. are now functions to prevent global
	initialization problems.</li>

	<li>Use the standard locale <code>std::locale("")</code> for the
	converting string functions by default.</li>

	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>

	<li>Improved the type safety of the constructors, which now use
	fcppt::safe_cast</li>

	<li>Support references in strong typedefs.</li>

	<li>Removed the default constructor.</li>

	</ul>
</li>

<li>\ref fcpptvariant
	<ul>

	<li>Variants can no longer be empty. A default constructor is no longer
	provided.</li>

	</ul>
</li>

<li>\ref fcpptvarious
	<ul>

	<li>Made fcppt::type_info constructor explicit.</li>

	<li> fcppt::type_name now gets a <code>std::type_info</code> instead of
	an fcppt::type_info.</li>

	</ul>
</li>

</ul>

\subsection changes_removed_functionality_to_011 Removed functionality

\subsubsection changes_removed_libraries_to_011 Removed libraries

<ul>

<li>Removed fcppt::utf8. It is not really implementable without OS
support.</li>

<li>Removed fcppt::chrono, expect the asio glue code. <code>boost.chrono</code>
should be used.</li>

</ul>

\subsubsection changes_removed_from_libraries_to_011 Removed functionality from libraries

<ul>

<li>Removed fcppt::auto_ptr typedef</li>

<li>Removed FCPPT_ASSERT and FCPPT_ASSERT_MESSAGE, which were replaced by the
new fcpptassert "assert" framework</li>

<li>Removed FCPPT_STUB_FUNCTION</li>

<li>Removed fcppt::minmax_pair</li>

<li>\ref fcpptendianness
	<ul>

	<li>Removed fcppt::endianness::copy_n_from_host,
	fcppt::endianness::copy_n_to_host, fcppt::endianness::copy_n_swapped
	and fcppt::endianness::copy_swapped,
	fcppt::endianness::from_big_endian, fcppt::endianness::from_host,
	fcppt::endianness::from_little_endian,
	fcppt::endianness::to_big_endian, fcppt::endianness::to_host and
	fcppt::endianness::to_little_endian.</li>

	</ul>
</li>

<li>\ref fcpptfilesystem
	<ul>

	<li>Removed fcppt::filesystem::first_file, fcppt::filesystem::next_file
	and fcppt::filesystem::skip_directories.</li>

	<li>Removed fcppt::filesystem::create_directories_recursive,
	fcppt::filesystem::create_directory, fcppt::filesystem::current_path,
	fcppt::filesystem::directory_iterator, fcppt::filesystem::exists,
	fcppt::filesystem::file_size, fcppt::filesystem::is_directory,
	fcppt::filesystem::is_regular, fcppt::filesystem::path,
	fcppt::filesystem::readlink,
	fcppt::filesystem::recursive_directory_iterator,
	fcppt::filesystem::remove and fcppt::filesystem::remove_filename</li>

	<li>Removed fcppt::io::cifstream, fcppt::io::cofstream and
	fcppt::io::cfstream</li>

	</ul>
</li>

<li>\ref fcpptmath
	<ul>

	<li>Removed fcppt::math::almost_zero, fcppt;:math::compare,
	fcppt::math::machine_epsilon, fcppt::math::vector::is_null,
	fcppt::math::null and all other epsilon comparing functions. A general
	epsilon cannot be provided and the user must choose one. As a result of
	this, all comparison functions use <code>==</code>. It is made sure
	that they still emit warnings when using
	<code>-Wfloat-equal</code>.</li>

	<li>Removed fcppt::math::vector::to_angle,
	fcppt::math::vector::transform, fcppt::math::vector::unit_circle and
	fcppt::math::vector::place.</li>

	<li>Removed fcppt::math::dim::quad and
	fcppt::math::dim::transform.</li>

	<li>Removed FCPPT_MATH_INSTANTIATE_ARITHMETIC,
	fcppt::math::is_negative, fcppt::math::round_div_int, fcppt::math::quad,
	fcppt::math::inverse and fcppt::math::signum.</li>

	<li>Removed fcppt::math::matrix::look_at</li>

	<li>Removed broken overloads of fcppt::math::next_pow_2</li>

	</ul>
</li>

<li>\ref fcpptsmartptr
	<ul>

	<li>fcppt::unique_ptr doesn't store its deleter anymore.</li>

	</ul>
</li>

<li>\ref fcpptstring
	<ul>

	<li>Removed fcppt::lexical_cast which was replaced by
	fcppt::extract_from_string and fcppt::insert_to_string</li>

	</ul>
</li>

<li>\ref fcpptstrongtypedef
	<ul>

	<li>Removed the nonconst getter from fcppt::strong_typedef</li>

	</ul>
</li>

<li>\ref fcpptvariant
	<ul>

	<li>Removed fcppt::variant::apply, use fcppt::variant::apply_unary,
	fcppt::variant::apply_binary or fcppt::variant::apply_ternary
	instead.</li>

	</ul>
</li>

</ul>

\subsection changes_bugfixes_to_011 Bugfixes

<ul>

<li>Fixed <code>fcppt::mpl::index_of</code> to only allow types that are part of the
sequence. This also fixes invalid uses of fcppt::variant::object::get </li>

<li>Fixed fcppt::variant::holds_type when recursive types are involved.</li>

<li>Don't overwrite <code>Boost_ADDITIONAL_VERSIONS</code> in cmake, just
append to it.</li>

<li>Fixed fcppt::algorithm::ptr_container_erase</li>

<li>Fixed the iterator category of fcppt::cyclic_iterator</li>

<li>Fixed static linking of fcppt</li>

<li>Fixed fcppt::math::box::contains_point</li>

<li>Made logging a lot less expensive</li>

<li>fcppt::variant::apply_unary now has linear complexity instead of quadratic
complexity if the variant has been declared using an
<code>boost::mpl::list</code></li>

</ul>

\section changes_changes_to_010 Changes from 0.9 to 0.10

\subsection changes_added_functionality_to_010 Added functionality

<ul>
	<li>Added <code>math::matrix::is_matrix</code> trait.</li>
	<li>Added <code>io::stream_to_string</code> that reads the whole content of a stream into a string.</li>
	<li>Added <code>filesystem::create_directory_exn</code> and <code>filesystem::create_directories_recursive_exn</code>.</li>
	<li>Added <code>backtrace</code> which can print a stack trace for gcc compiled binaries.</li>
	<li>Install a new <code>FcpptConfig.cmake</code> file so cmake can find an installed fcppt without <code>FindFcppt.cmake</code>.</li>
	<li>Added fusion adaptors for <code>container::array</code>.</li>
	<li>Added <code>utf8::from_std_string</code>.</li>
	<li>Implemented <code>FCPPT_PP_FUNCTION</code> for VC++.</li>
	<li>Added support for <code>boost::array</code> to <code>assign::array</code>.</li>
	<li>Added <code>container::ptr::push_front_unique_ptr</code>.</li>
	<li><code>-fvibisibility=hidden</code> is now optional, but still on by default (use <code>FCPPT_ENABLE_VISIBILITY_HIDDEN</code>).</li>
	<li>Added <code>mpl::append</code>.</li>
</ul>

\subsection changes_changed_functionality_to_010 Changed functionality

<ul>
	<li>Changed the default cmake module installation path to
	<code>${CMAKE_ROOT}/Modules</code> if <code>${CMAKE_INSTALL_PREFIX}</code> is a
	prefix of <code>${CMAKE_ROOT}</code>.</li>
	<li>Replaced <code>utf8::convert</code> by <code>utf8::from_fcppt_string</code>
	and <code>utf8::to_fcppt_string</code>.</li>
	<li>random now uses <code>boost::random</code> instead of
	<code>tr1::random</code>.</li>
	<li>A 64 bit type is now required for chrono.</li>
</ul>

\subsection changes_removed_functionality_to_010 Removed functionality

<ul>
	<li>Removed boost filesystem v2 support. Boost 1.44 or later is now needed.</li>
	<li>Removed <code>math::matrix::perspective</code>,
	<code>math::matrix::orthogonal</code> and
	<code>math::matrix::orthogonal_xy</code>. Every projection function is only
	meaningful if you know which canonical view volume you are using.<li>
</ul>

\subsection changes_bugfixes_to_010 Bugfixes

<ul>
	<li>Fixed <code>FCPPT_DYN_LINK</code> behaviour in
	<code>FindFcppt.cmake</code>.</li>
	<li>Properly pass <code>QUIETLY</code> and <code>REQUIRED</code> in
	<code>FindFcppt.cmake</code>.</li>
	<li>Include <code>Boost_INCLUDE_DIRS</code> rather than
	<code>Boost_INCLUDE_DIR</code>.</li>
	<li>Use <code>-pthread</code> for POSIX systems because we use
	boost.thread and asio.</li>
	<li>Assert that a type requested via <code>variant::object::get</code>
	or <code>\verbatim ::get_raw \endverbatim</code> is actually among its possible types.</li>
	<li><code>type_traits::is_iterable</code>,
	<code>TYPE_TRAITS_GENERATE_HAS_MEMBER_FUNCTION</code> and
	<code>TYPE_TRAITS_GENERATE_HAS_TYPE</code> now properly expose an
	<code>mpl::bool</code>.</li>
	<li>The default case of <code>chrono::common_type</code> has been
	restricted to fundamental types to avoid compiler errors with certain
	overloaded operators.</li>
</ul>
*/
