4.6.0
Freundlich's C++ toolkit
Loading...
Searching...
No Matches
Changes

4.6.0

  • Cleaned up clang-19 warnings.

Added functionality

Changed functionality

Removed functionality

Bugfixes

  • Fixed compilation with clang-19.

4.5.0

  • Cleaned up clang-18 warnings.
  • Added MSVC and MacOS CI/CD on Github.
  • Overhauled and documented CMake files, using cmake-format and cmake-lint.
  • Added the ability to also compile header files using misc-include-cleaner from clang-tidy and cleaned up all includes in header files as a result.

Added functionality

Changed functionality

Removed functionality

Bugfixes

  • fcppt.enum

    • Fixed enum size types for small enums.

4.4.1

  • Cleaned up clang-17 warnings.
  • Added Include-What-You-Use pragmas.

Added functionality

4.4.0

  • Added a workaround for Apple Clang.
  • Cleaned up clang-16 and gcc-13 warnings.

Changed functionality

Removed functionality

  • fcpptassert

    • Removed most of the library.

Bugfixes

4.3.0

  • Switched from Catch-2 to Catch-3 for unit tests.
  • Fixed some warnings related to clang-15.
  • Support for VC++-14.34 (Visual Studio 2022 Version 17.4).

Added functionality

Removed functionality

Bugfixes

4.2.1

Support for VC++-14.32 (Visual Studio 2022 Version 17.2).

4.2.0

Added functionality

This release fixes some warnings related to clang-14.

Removed functionality

  • fcppt.filesystem

    • Removed fcppt::filesystem::replace_extension. Use std::filesystem::path::replace_extension.
    • Removed fcppt::filesystem::strip_prefix. Use std::filesystem::relative.
    • Removed fcppt::filesystem::num_subpaths.
    • Removed fcppt::filesystem::normalize.
    • Removed fcppt::filesystem::stem. Use std::filesystem::path::stem.

4.1.0

This release fixes some warnings related to clang-13.

Added functionality

Changed functionality

4.0.0

fcppt now uses C++-20. Some functions were updated to use concepts, but this is still a work in progress.

Metal is no longer required.

Added functionality

Changed functionality

Removed functionality

  • fcppt.assert

    • Removed FCPPT_ASSERT_UNIMPLEMENTED_MESSAGE.
    • Removed FCPPT_ASSERT_PRE and FCPPT_ASSERT_PRE_MESSAGE.

  • fcppt.container

    • Removed fcppt::container::contains. In C++20, maps have a contains member function.

  • fcppt.endianness

    • Removed fcppt::endianness::format, fcppt::endianness::is_big_endian, fcppt::endianness::is_little_endian and fcppt::endianness::host_format. Use std::endian instead.

  • fcppt.math

    • Removed fcppt::math::pi and fcppt::math::twopi. Use std::numbers::pi_v instead.

  • fcpptmetal

    This has been removed in favor of fcppt.mpl.

  • fcppt.optional

    • Removed fcppt::optional::const_cast_, fcppt::optional::dynamic_cast_ and fcppt::optional::static_cast_.

  • fcppt.type_traits

    • Removed fcppt::type_traits::remove_cv_ref_t. Use std::remove_cvref_t.
    • Removed fcppt::type_traits::function_result.
    • Removed fcppt::type_traits::is_float_or_double.

Bugfixes

3.8.0

Added functionality

Changed functionality

Removed functionality

Bugfixes

  • Fixed a gcc-11 issue regarding parameter expansion.

3.7.0

Added functionality

Removed functionality

  • fcpptcontainerarray

    This has been removed in favor of fcppt.array.

  • fcpptcontainertuple

    This has been removed in favor of fcppt.tuple.

  • fcppt.various

    • Removed fcppt::homogenous_pair.

  • fcppt.type_traits

    • Removed fcppt::type_traits::is_std_array.
    • Removed fcppt::type_traits::is_std_tuple.

3.6.0

Added functionality

Changed functionality

Bugfixes

  • Fix clang-11 issues with destructor names.

3.5.0

Added functionality

Changed functionality

Removed functionality

  • fcppt.casts

    • Removed fcppt::cast::safe.

  • fcpptcontainertuple

    • Removed fcppt::container::tuple::type_at. Use std::tuple_element.

  • fcppt.type_traits

    • Removed fcppt::type_traits::constructible_from. Use std::is_constructible.

3.4.0

  • Replaced Brigand with Metal.

Added functionality

Changed functionality

3.3.0

  • fcppt now uses std::filesystem.

Added functionality

Removed functionality

  • fcppt.filesystem

    • Removed fcppt::filesystem::create_directory_error.

  • Removed the fcpptsystem library.

3.2.2

Bugfixes

3.2.1

Bugfixes

  • Fix Doxygen links.

3.2.0

Added functionality

Changed functionality

3.1.0

Added functionality

Changed functionality

Removed functionality

  • fcppt.boost

    • Removed spirit traits.

  • fcppt.catch

    • Removed fcppt::catch_::defer.

  • fcpptcontainertuple

    • Removed fcppt::container::tuple::to_varargs. Use std::apply.

  • fcppt.preprocessor

    • Removed FCPPT_PP_WARN_UNUSED_RESULT.

3.0.0

fcppt now uses C++-17.

Added functionality

  • fcpptbrigand

    • Added fcppt::brigand::is_set.
    • Added fcppt::brigand::unique.

Changed functionality

  • fcppt.optional

    • Now uses std::optional in its implementation.

  • fcppt.record

    • All labels of a record must be distinct now.

  • fcppt.variant

    • Now uses std::variant in its implementation. This change makes the constructor of fcppt::variant::object stricter, since it now uses std::is_constructible. For example, an rvalue of a type that is not movable cannot be used to construct a variant.

    • Removed the assignment operator of fcppt::variant::object that assigned an underlying value. Assign a new variant instead.
    • Moved fcppt/variant/less.hpp, fcppt/variant/equal.hpp and fcppt/variant/not_equal.hpp. into fcppt/variant/comparison.hpp.
    • All types of a variant must be distinct now.

2.10.0

Added functionality

Changed functionality

Removed functionality

2.9.0

Added functionality

Changed functionality

Removed functionality

  • fcppt.algorithm

    • Removed fcppt::algorithm::append.

  • fcppt.filesystem

    • Removed fcppt::filesystem::file_to_string.
    • Removed fcppt::filesystem::size_to_size_t.

  • fcppt.string

    • Removed fcppt::output_to_std_string_convert.

  • fcppt.variant

    • Removed fcppt::variant::apply_unary, fcppt::variant::apply_binary and fcppt::variant::apply_ternary.

Bugfixes

2.8.0

General changes

  • Replaced boost.test with Catch2. This means that in order to build the tests (-D ENABLE_TEST=ON), Catch2 is now required.

Added functionality

Changed functionality

  • fcppt.algorithm

    • Moved fcppt::algorithm::array_map, fcppt::algorithm::array_init, fcppt::algorithm::array_init_const, fcppt::algorithm::array_init_move, fcppt::algorithm::array_push_back and fcppt::container::make_array to fcpptcontainerarray.
    • Renamed fcppt::algorithm::vararg_map to fcppt::container::tuple::vararg_map.

  • fcpptassign

  • fcppt.container

    • Renamed fcppt::container::untuple to fcppt::container::tuple::to_varargs.

  • fcpptcontainerarray

    • fcppt::container::array::map no longer uses an explicit result type.

  • fcppt.math.dim

  • fcppt.math.vector

  • fcppt.options

    • The active and inactive values in fcppt::options::flag must be different now.
    • All long and short names must be distinct now.
    • All parsers and their parameters are now passed as rvalue references. Use fcppt::make_cref or fcppt::copy to pass them.

  • fcppt.string

    • Renamed fcppt::insert_to*_string to fcppt::output_to*_string.

Removed functionality

  • Removed fcppt.mpl.

  • fcppt.algorithm

    • Removed fcppt::algorithm::array_binary_map. This has been replaced by fcppt::container::array::apply.

Bugfixes

2.7.0

General changes

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

Added functionality

Changed functionality

Removed functionality

  • fcppt.algorithm

    • Removed fcppt::algorithm::levenshtein and fcppt::algorithm::shortest_levenshtein,

  • fcppt.casts

    • Removed fcppt::cast::promote.

  • fcppt.math

    • Removed fcppt::math::to_array_type_tpl.

  • fcppt.math.dim

    • Removed operator%, operator%= and operator/=.
    • Removed operator+ and operator- that took a scalar.
    • Removed unary operator+.

  • fcppt.math.matrix

    • Removed operator/= and operator/.

  • fcppt.math.vector

    • Removed operator%, operator%= and operator/=.
    • Removed operator+ and operator- that took a scalar.
    • Removed unary operator+.

  • fcpptmpl

    This library is in the process of being replaced by fcpptbrigand>.

  • fcppt.record

    • Removed fcppt::record::disjoint_product_tpl,
    • Removed fcppt::record::element_map_tpl,
    • Removed fcppt::record::element_to_label_tpl,
    • Removed fcppt::record::element_to_type_tpl,
    • Removed fcppt::record::element_vector_tpl,
    • Removed fcppt::record::label_set_tpl,
    • Removed fcppt::record::label_value_type_tpl,

  • fcppt.strong_typedef

    • Removed operator/, operator/=, operator% and operator%=.
    • Removed the unary operator+.
    • Removed the shift operators operator<<, operator<<=, operator>> and operator>>=.

  • fcppt.type_traits

    • Removed fcppt::type_traits::is_iterable, fcppt::type_traits::has_iterator and fcppt::type_traits::has_const_iterator.
    • Removed FCPPT_TYPE_TRAITS_GENERATE_HAS_TYPE and FCPPT_TYPE_TRAITS_GENERATE_HAS_MEMBER_FUNCTION.
    • Removed fcppt::type_traits::is_iterator.
    • Removed fcppt::type_traits::function_pointer_to_reference.
    • Removed fcppt::type_traits::is_input_iterator, fcppt::type_traits::is_output_iterator, fcppt::type_traits::is_forward_iterator, fcppt::type_traits::bidirectional_iterator and fcppt::type_traits::is_random_access_iterator.

  • fcppt.variant

    • Removed fcppt::variant::types_of_tpl.

2.6.0

Added functionality

Changed functionality

Removed functionality

Bugfixes

  • fcppt.signal

    • Don't forward arguments into signal because they have to be used multiple times.

  • fcppt.string

    • Fixed initialization of std::mbstate_t when doing character conversions.

  • fcppt.variant

    • Fixed moving of nested variants.

2.5.1

Added functionality

  • fcpptmpl

    • Added fcppt::mpl::sequence_to_string.

  • fcppt.variant

    • Added fcppt::variant::types_of and fcppt::variant::types_of_tpl.
    • Added move semantics to fcppt::variant::apply_unary, fcppt::variant::apply_binary and fcppt::variant::apply_ternary.
    • Improved the error message of fcppt::variant::invalid_get.
    • Added fcppt::variant::types_string.
    • Added fcppt::variant::current_type_name.

2.5.0

Added functionality

Changed functionality

Bugfixes

2.4.1

Bugfixes

  • CMake

    • Set CMAKE_CXX_STANDARD to 14 in order to fix a bug with imported Qt targets.

2.4.0

Added functionality

Changed functionality

Removed functionality

  • fcppt.casts

    • Removed unused fcppt::cast::apply_fun.

  • fcppt.container.grid

    • Removed fcppt::container::grid::object::{rbegin, rend, cbegin, cend, crbegin, crend}.
    • Removed fcppt::container::grid::object::resize and fcppt::container::grid::object::resize_init.
    • Removed fcppt::container::grid::resize_preserve and fcppt::container::grid::resize_preserve_init.

  • fcppt.math

    • Removed fcppt::math::step.
    • Removed fcppt::math::bresenham and fcppt::math::bresenham_thick.

  • fcppt.ref

    • Removed fcppt::reference<T>::get_pointer.

2.3.0

Added functionality

Changed functionality

  • CMake

    • fcppt_utils_add_test now gets the test directory as argument as well.

  • fcppt.algorithm

    • fcppt::algorithm::vararg_map now uses a fusion sequence instead of an MPL sequence.

2.2.0

Added functionality

Changed functionality

Removed functionality

  • fcppt.casts

    • Removed fcppt::cast::static_downcast_ptr.

2.1.0

General changes

  • VC++ from Visual Studio 2015 Update 2 is now supported.

Added functionality

Changed functionality

Removed functionality

  • fcppt.algorithm

    • Removed fcppt::algorithm::shift_compare.

  • fcpptassign

    • Removed fcppt::assign::make_container_opt.
    • Removed fcppt::assign::make_map.

  • fcppt.casts

    • Removed fcppt::cast::dynamic for pointers.

  • fcppt.io

    • Removed fcppt::io::read_exn.
    • Removed fcppt::io::raw_container_source.

  • fcppt.math

    • Removed fcppt::math::mod_assign.

  • fcppt.string

    • Removed fcppt::extract_from_string_exn.

  • fcppt.various

    • Removed FCPPT_DECLTYPE_SINK.
    • Removed fcppt::tag_value.

2.0.0

General changes

  • C++14 is now required. This probably excludes compilers older than gcc-5.2 and clang-3.4. However, this also leads to several improvements:

    • Polymorphic lambdas are now used to initialize arrays with static indices. This improves the safety of several algorithms, e.g. matrix * vector, matrix * matrix and so on, by checking for out-of-bounds accesses at compile-time.
    • Heterogenous lookup is now supported. For example, you can search a std::set<unique_ptr<int>> given an int *.

  • fcppt::algorithm has been cleaned up substantially:

    • All _exn functions have been removed in favor of fcppt::optional_to_exception.
    • All iterator-based versions have been removed in favor of ranges.
    • All algorithms can now take rvalues to support views.

Bugfixes

  • fcppt.algorithm

    • Fixed return type of fcppt::algorithm::join so it never returns a reference.

Added functionality

Changed functionality

Removed functionality

  • CMake

    • Removed BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0 which has not been used for a long time.

  • fcppt.algorithm

    • Removed fcppt::algorithm::array_fold and fcppt::algorithm::enum_array_fold which were only useful in C++11.

  • fcppt.container

    • Removed fcppt::container::find_exn in favor of fcppt::optional_to_exception.

  • fcppt.container.grid

  • fcppt.enum

    • Removed at() and empty() from fcppt::container::enum_array.

  • fcppt.math

    • Removed default constructors.
    • Removed container-like functionality, including iterator-based constructors, begin/end, front/ back, etc, and so on.
    • Removed swap implementations because they gained nothing over std::swap.

  • fcppt.math.vector

    • Removed fcppt::math::vector::project and fcppt::math::vector::orthogonalize.

  • fcppt.signal

  • fcppt.smart_pointers

  • fcppt.strong_typedef

    • Removed implicit assignment from the underlying type.
    • Removed strong typedef references.

  • fcppt.time

    • Removed fcppt::time::parse_time and fcppt::time::parse_date.

  • fcppt.variant

    • Removed fcppt::variant::object::get_exn. Use the free function fcppt::variant::get_exn instead.