4.6.0
Freundlich's C++ toolkit
|
Cleaned up clang-19
warnings.
std::hash
specialization. std::hash
specialization. fcppt_maximum
. Instead, there is now a customization point using fcppt::enum_::max_value_impl. Also added FCPPT_ENUM_DEFINE_MAX_VALUE to make defining this easier. Fixed compilation with clang-19
.
clang-18
warnings. 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.
FCPPT_ASSERT_UNREACHABLE
. Redesigned how log formatting works. The main class is now fcppt::log::level_stream and the functions in fcppt::log::format
have been removed.
fcppt::record::enable_vararg_ctor
to fcppt::record::is_vararg_ctor. fcpptassert
FCPPT_ASSERT_UNREACHABLE
. fcppt::iterator::adapt_range
. fcppt::random::distribution::parameters::make_uniform_indices
. The version fcppt::random::distribution::parameters::make_uniform_indices_advanced still exists. clang-17
warnings. Added Include-What-You-Use pragmas.
Cleaned up clang-16
and gcc-13
warnings.
fcppt::ref
in the constructor of fcppt::scoped_state_machine. usage
from a string to fcppt::options::usage. In addition, fcppt::options::help_result now also uses fcppt::options::usage instead of fcppt::options::help_text. fcpptassert
FCPPT_DETAIL_SYMBOL
on fcppt::exception::string
. Catch-2
to Catch-3
for unit tests. clang-15
. Support for VC++-14.34
(Visual Studio 2022 Version 17.4).
FCPPT_ASSERT_OPTIONAL_ERROR
. Support for VC++-14.32
(Visual Studio 2022 Version 17.2).
This release fixes some warnings related to clang-14
.
fcppt::filesystem::replace_extension
. Use std::filesystem::path::replace_extension
. fcppt::filesystem::strip_prefix
. Use std::filesystem::relative
. fcppt::filesystem::num_subpaths
. fcppt::filesystem::normalize
. fcppt::filesystem::stem
. Use std::filesystem::path::stem
. This release fixes some warnings related to clang-13
.
FCPPT_MAKE_STRONG_TYPEDEF
to FCPPT_DECLARE_STRONG_TYPEDEF. 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.
New library with various C++20 concepts.
New library that replaces Metal.
detail::
. operator<<
. operator->
to fcppt::recursive. fcppt::extract_from_string_locale
has been renamed to fcppt::extract_from_string_locale_fmt and has gained an additional format flags parameter. std::exception
instead of fcppt::exception. FCPPT_ASSERT_UNIMPLEMENTED_MESSAGE
. FCPPT_ASSERT_PRE
and FCPPT_ASSERT_PRE_MESSAGE
. fcppt::container::contains
. In C++20, maps have a contains
member function. fcppt::endianness::format
, fcppt::endianness::is_big_endian
, fcppt::endianness::is_little_endian
and fcppt::endianness::host_format
. Use std::endian
instead. 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::const_cast_
, fcppt::optional::dynamic_cast_
and fcppt::optional::static_cast_
. fcppt::type_traits::remove_cv_ref_t
. Use std::remove_cvref_t
. fcppt::type_traits::function_result
. fcppt::type_traits::is_float_or_double
. fcpptmetal
fcppt::metal::print
now works on arbitrary char types. std::result_of_t
has been replaced with std::invoke_result_t
. Deprecated member typedefs of std::allocator
have been replaced with std::allocator_traits
.
std::string
. The function fcppt::enum_::to_string in particular returns a std::string_view
. fcpptmetal
fcppt::metal::sequence_to_string
now returns a std::string
. std::system_error
internally instead of the potentially not thread-safe std::strerror
function. std::string
. FCPPT_ASSERT_THROW
, FCPPT_ASSERT_THROW_MESSAGE
, FCPPT_ASSERT_POST
and FCPPT_ASSERT_POST_MESSAGE
. fcppt::cast::dynamic_cross_exn
and fcppt::cast::dynamic_exn
. fcppt::container::bitfield::enum_object
. fcppt::enum_::from_int_exn
. fcppt::time::ctime
. fcppt::variant::get_exn
. fcppt::variant::types_string
. New library. The difference between std::array
is that fcppt::array::object does not allow default construction.
fcpptmetal
fcppt::metal::is_invocable
. Added documentation.
noexcept
and constexpr
. New library. The difference between std::tuple
is that fcppt::tuple::object does not allow default construction.
fcpptcontainerarray
This has been removed in favor of fcppt.array.
fcpptcontainertuple
This has been removed in favor of fcppt.tuple.
fcppt::homogenous_pair
. fcppt::type_traits::is_std_array
. fcppt::type_traits::is_std_tuple
. fcppt::container::tuple::map
. fcpptcontainerarray
fcppt::container::array::from_range
. fcpptcontainertuple
fcppt::container::tuple::apply
. fcppt::container::tuple::from_array
. fcppt::container::tuple::init
. fcpptmetal
fcppt::metal::function_args
. fcppt::metal::contains
, which returns a boolean instead of a metal::number
. std::tuple
. =std::locale()
parameters. fcppt::extract_from_string_locale
, 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. fcpptmetal
fcppt::metal::set::contains
now returns a boolean instead of a metal::number
. =std::locale()
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. type
from fcppt::type_traits::function_result
. fcppt::cast::safe
. fcpptcontainertuple
fcppt::container::tuple::type_at
. Use std::tuple_element
. fcppt::type_traits::constructible_from
. Use std::is_constructible
. fcppt::brigand::implication
to fcppt::type_traits::implication. fcppt::brigand::integral_cast
to fcppt::type_traits::integral_cast. Moved fcppt::brigand::ceil_div
to fcppt::math::ceil_div_static.
fcppt::record::variadic
and added fcppt::record::from_list. fcppt::variant::variadic
and added fcppt::variant::from_list. std::filesystem
. fcppt::filesystem::create_directory_error
. Removed the fcpptsystem library.
Fix fcppt::unique_ptr assignment.
fcpptcontainerarray
fcppt::container::array::append
and fcppt::container::array::join
. operator<<
. operator<<
for fcppt::enum_::array. fcppt::container::tree::output
to operator<<
. fcppt::options::other_error
were moved to fcppt::options::parse_error. fcppt::options::combine_errors
to detail. Output operators now recurse into Catch's output code instead of using operator<<
.
fcppt::container::contains
. fcppt::record::enable_vararg_ctor
. fcppt::either::fold_error
to fcppt::either::sequence_error. fcppt::catch_::defer
. fcpptcontainertuple
fcppt::container::tuple::to_varargs
. Use std::apply
. FCPPT_PP_WARN_UNUSED_RESULT
. fcppt now uses C++-17
.
fcpptbrigand
fcppt::brigand::is_set
. fcppt::brigand::unique
. std::optional
in its implementation. 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.
fcppt/variant/less.hpp
, fcppt/variant/equal.hpp
and fcppt/variant/not_equal.hpp
. into fcppt/variant/comparison.hpp
. constexpr
. external_begin.h(pp)
and external_end.h(pp)
includes can now overlap. fcppt::log::_
to fcppt::log::out. FCPPT_NONASSIGNABLE
. fcpptcontainertuple
fcppt::container::tuple::move_element
. fcppt::container::tuple::type_at
. fcppt::container::tuple::types_of
. fcppt::options::indent
and added indentation to various parser outputs. fcppt::options::combine_errors
and use it in fcppt::options::sum. std::array
, you have to include fcppt/algorithm/map_array.hpp
. fcppt::algorithm::join
to fcppt::container::join. fcppt::algorithm::key_set
to fcppt::container::key_set. fcppt::algorithm::set_difference
to fcppt::container::set_difference. fcppt::algorithm::set_intersection
to fcppt::container::set_intersection. fcppt::algorithm::set_union
to fcppt::container::set_union. std::string
, fcppt::algorithm::append
. fcppt::filesystem::file_to_string
. fcppt::filesystem::size_to_size_t
. fcppt::output_to_std_string_convert
. fcppt::variant::apply_unary
, fcppt::variant::apply_binary
and fcppt::variant::apply_ternary
. Updated catch includes to use catch2/catch.hpp
.
std::set
instead of std::unordered_set
so that set_union
actually works. boost.test
with Catch2
. This means that in order to build the tests (-D ENABLE_TEST=ON
), Catch2 is now required. fcpptcontainerarray
fcppt::container::array::push_back
. fcppt::container::array::apply
. fcpptcontainertuple
fcppt::container::tuple::push_back
. operator==
to fcppt::iterator::range. fcppt::output_to_std_string_convert
. fcppt::type_traits::remove_cv_ref_t
. 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. fcppt::algorithm::vararg_map
to fcppt::container::tuple::vararg_map
. fcpptassign
fcppt::assign::make_container
to fcppt::container::make. fcppt::container::untuple
to fcppt::container::tuple::to_varargs
. fcpptcontainerarray
fcppt::container::array::map
no longer uses an explicit result type. fcppt::math::dim::construct
to fcppt::math::dim::push_back. fcppt::math::vector::construct
to fcppt::math::vector::push_back. fcppt::insert_to*_string
to fcppt::output_to*_string
. Removed fcppt.mpl
.
fcppt::algorithm::array_binary_map
. This has been replaced by fcppt::container::array::apply
. 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. -Weffc++
warning. Unfortunately, this warning has become even more broken in gcc-8
. std::array
in fcppt::algorithm::map. fcppt::algorithm::array_map
. fcpptbrigand
New library for brigand utility functions.
New library that is a simple replacement for boost::intrusive::list
. It only supports movable types. Furthermore, an element must be initialized with the list it is going to be a member of.
New library that provides a base class to implement iterators from and an iterator range.
New library that implements some utility functions for ranges.
fcppt::type_traits::function_result
. fcppt::type_traits::is_std_tuple
. boost::format
from fcppt::log::format::inserter
. operator/
now return optionals. operator/
now return optionals. fcppt::range_hash
to fcppt::range::hash. make_strong_typedef.hpp
from strong_typedef.hpp
. fcppt::algorithm::levenshtein
and fcppt::algorithm::shortest_levenshtein
, fcppt::cast::promote
. fcppt::math::to_array_type_tpl
. operator%
, operator%=
and operator/=
. operator+
and operator-
that took a scalar. operator+
. operator/=
and operator/
. operator%
, operator%=
and operator/=
. operator+
and operator-
that took a scalar. operator+
. fcpptmpl
This library is in the process of being replaced by fcpptbrigand>
.
fcppt::record::disjoint_product_tpl
, fcppt::record::element_map_tpl
, fcppt::record::element_to_label_tpl
, fcppt::record::element_to_type_tpl
, fcppt::record::element_vector_tpl
, fcppt::record::label_set_tpl
, fcppt::record::label_value_type_tpl
, operator/
, operator/=
, operator%
and operator%=
. operator+
. operator<<
, operator<<=
, operator>>
and operator>>=
. fcppt::type_traits::is_iterable
, fcppt::type_traits::has_iterator
and fcppt::type_traits::has_const_iterator
. FCPPT_TYPE_TRAITS_GENERATE_HAS_TYPE
and FCPPT_TYPE_TRAITS_GENERATE_HAS_MEMBER_FUNCTION
. fcppt::type_traits::is_iterator
. fcppt::type_traits::function_pointer_to_reference
. 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::types_of_tpl
. fcppt::algorithm::append
now also works on rvalues. fcppt::algorithm::join
to join maps and sets. 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.
fcppt::either::fold_error
and fcppt::either::error_from_optional. fcppt::enum_::names
and fcppt::enum_::names_impl
. fcppt::filesystem::create_directory_error
and fcppt::filesystem::create_directories_recursive. fcppt::filesystem::size_to_size_t
. 4 x 4
. fcppt/options/pretty_type_enum.hpp
that outputs all possible enumerators via fcppt::enum_::names. fcppt::add_reference
. std::hash
specialization. fcpptsystem
New library that wraps some functionality from boost.system
.
main
function to support unicode arguments in Windows. operator==
, operator!=
and operator<<
for fcppt::unit. CMake
find_package(fcppt)
now adds fcppt's module path to CMAKE_MODULE_PATH
. GNUInstallDirs.cmake
instead of its own variables. fcppt::container::raw_vector
to fcppt::container::raw_vector::object. fcppt/container/raw_vector/comparison.hpp
. std::vector
. operator[]
of fcppt::container::grid::object to fcppt::container::grid::object::get_unsafe. Moved most functionality that is related to contiguous enums to the fcppt::enum_ namespace.
fcppt::filesystem::file_to_string
now returns fcppt::optional_string for most errors. std::basic_ifstream
, std::basic_ofstream
and std::basic_fstream
instead of the boost variants. fcppt::math::at_c
into fcppt::math::vector::at, fcppt::math::dim::at and fcppt::math::matrix::at_r. operator[]
of fcppt::math::dim::object to fcppt::math::dim::object::get_unsafe. operator[]
of fcppt::math::matrix::object to fcppt::math::matrix::object::get_unsafe. fcppt::math::matrix::at_c
to fcppt::math::matrix::at_r_c. fcppt::math::matrix::delete_row_and_column_static
to fcppt::math::matrix::delete_row_and_column. std::array
. operator[]
of fcppt::math::vector::object to fcppt::math::vector::object::get_unsafe. fcppt::options::custom_pretty_type
to fcppt::options::pretty_type_impl. fcppt/shared_ptr_output.hpp
. char
. fcppt::container::is_std_vector
. fcppt::container::is_raw_vector
. std::vector
. fcppt::filesystem::exception
. fcppt::filesystem::create_directories_recursive_exn
and fcppt::filesystem::create_directory_exn
. fcppt::filesystem::is_executable
which is covered by boost.filesystem
. fcppt::math::matrix::delete_row_and_column
. std::mbstate_t
when doing character conversions. fcpptmpl
fcppt::mpl::sequence_to_string
. fcppt::variant::types_of_tpl
. fcppt::variant::apply_unary
, fcppt::variant::apply_binary
and fcppt::variant::apply_ternary
. fcppt::variant::invalid_get
. fcppt::variant::types_string
. operator<<
and operator>>
for fcppt::log::level. fcppt::math::to_array_type_tpl
, fcppt::math::from_array and fcppt::math::to_array. fcpptmpl
fcppt::mpl::set_intersection
. fcppt::mpl::set_union
. fcppt::mpl::set_difference
. fcppt::mpl::set_symmetric_difference
. New library for parsing command-line options, similar to Haskell's optparse-applicative.
fcppt::record::label_set_tpl
. fcppt::record::disjoint_product_tpl
. fcppt::record::label_value_type_tpl
. fcppt::record::element_map_tpl
. ==
and !=
comparison for equivalent records. fcppt::record::element_vector_tpl
. fcppt::type_traits::constructible_from
. fcppt::math::static_storage
, fcppt::math::matrix::static_storage
, fcppt::math::map
and fcppt::math::binary_map
to detail. std::string
. CMake
CMAKE_CXX_STANDARD
to 14
in order to fix a bug with imported Qt targets. fcppt::math::generate_binary_vectors
to fcppt::math::vector::bit_strings. fcppt::cast::apply_fun
. fcppt::container::grid::object::{rbegin, rend, cbegin, cend, crbegin, crend}
. fcppt::container::grid::object::resize
and fcppt::container::grid::object::resize_init
. fcppt::container::grid::resize_preserve
and fcppt::container::grid::resize_preserve_init
. fcppt::math::step
. fcppt::math::bresenham
and fcppt::math::bresenham_thick
. fcppt::reference<T>::get_pointer
. CMake
FOLDER
properties on targets. fcppt_utils_set_target_folder
. fcppt_utils_add_example
. 4309
(overflow of a constant) in external headers. fcppt::container::untuple
. fcpptmpl
fcppt::mpl::index_of_iterator
. New library that implements generic records, whose elements are accessed by unique label types.
fcppt/variant/comparison.hpp
. CMake
fcppt_utils_add_test
now gets the test directory as argument as well. fcppt::algorithm::vararg_map
now uses a fusion sequence instead of an MPL sequence. CMake
Added interface libraries to fcppt's exported targets. For example, fcppt_core_interface
can be used to inherit the include paths and compile definitions from fcppt_core
without linking to the library.
INCLUDE_DIRS
and LINK_LIBS
to fcppt_utils_add_dummy_target
. fcppt_utils_is_path_prefix_of
. FCPPT_CONFIG_GNU_GCC_COMPILER
to distinguish gcc from clang. -Wundefined-var-template
for clang-3.9
in external headers. -Wsuggest-override
in external headers. -Wnull-dereference
for gcc-6
in external headers. fcpptmpl
fcppt::mpl::partial_sums
can now be specified. CMake
fcppt_utils_generate_config
. _fwd
headers to fcppt::io::istream, fcppt::io::ostream, fcppt::io::istringstream, fcppt::io::ostringstream and fcppt::io::stringstream. fcppt::io::ifstream
, fcppt::io::ofstream
and fcppt::io::fstream
to fcppt::filesystem::ifstream, fcppt::filesystem::ofstream and fcppt::filesystem::fstream. The logging library went through a major rewrite, with the purpose to remove global objects.
fcppt::container::bitfield::object_from_enum
to fcppt::container::bitfield::enum_object
and introduced an _fwd
header. fcppt::cast::static_downcast_ptr
. std::tuple
as a range. fcppt::cast::dynamic_cross_exn
. -Wfloat-conversion
and -Wsign-conversion
for gcc-6
in external headers again. -Wexpansion-to-defined
for clang-3.9
in external headers. fcppt::container::make_array
. New library that represents sum types of failure and success.
fcppt::cast_to_enum_exn
. fcpptmpl
fcppt::mpl::flatten
. fcppt::mpl::numeric_max
. fcppt::cast::try_dynamic
to fcppt::cast::dynamic, and renamed fcppt::cast::dynamic
to fcppt::cast::dynamic_exn
. fcppt::cast::dynamic_exn
only work on related types now. fcppt::cast_to_enum
now returns an optional. optional_bind_construct
to fcppt::optional::map. fcppt::reference_wrapper
to fcppt::reference. FCPPT_NONASSIGNABLE
now simply use =delete
instead of private:
fcppt::algorithm::shift_compare
. fcpptassign
fcppt::assign::make_container_opt
. fcppt::assign::make_map
. fcppt::cast::dynamic
for pointers. fcppt::io::read_exn
. fcppt::io::raw_container_source
. fcppt::math::mod_assign
. fcppt::extract_from_string_exn
. FCPPT_DECLTYPE_SINK
. fcppt::tag_value
. 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:
matrix * vector
, matrix * matrix
and so on, by checking for out-of-bounds accesses at compile-time. std::set<unique_ptr<int>>
given an int *
. fcppt::algorithm has been cleaned up substantially:
_exn
functions have been removed in favor of fcppt::optional_to_exception
. fcppt::algorithm::join
so it never returns a reference. CMake
NO_CODE
flag to fcppt_utils_add_test
which can be used to generate test cases that only consist of static asserts. value_type
instead of mapped_type
. -Wsign-compare
in external headers. fcppt::mpl::enum_range
and fcppt::mpl::enum_range_start_end
.fcppt::math::matrix::at_c
. fcppt::math::matrix::delete_row_and_column_static
. fcppt/math/sphere/output.hpp
. fcpptmpl
fcppt::mpl::copy
. fcppt::mpl::for_each_break
. fcppt::mpl::integral_cast_tpl
. fcppt::optional_join
. fcppt::variant::variadic
. FCPPT_DECLTYPE_SINK
which returns decltype
of an expression and also uses it. This is useful in polymorphic lambdas where the argument is only used for its type. fcppt::tag_value
to extract a default-constructed value of a tag, which is useful for integral constants. fcppt::algorithm::array_fold_static
to fcppt::algorithm::array_init
, fcppt::algorithm::enum_array_fold_static
to fcppt::algorithm::enum_array_init
and fcppt::algorithm::array_init
to fcppt::algorithm::array_init_const
. operator bool
, swap
and clear
. fcppt/container/bitfield/comparison.hpp
. fcppt/container/bitfield/operators.hpp
. fcppt::enum_is_empty
. All enum ranges are now non-empty. std::integral_constant
. This greatly simplifies matching of template arguments. (pos,max)
representation instead of (pos,dim)
. This greatly simplifies a lot of algorithms on boxes. It also changes the interface slightly. fcppt::math::box::init
. null
of fcppt::math::box::object to fcppt::math::box::null. null
of fcppt::math::dim::object to fcppt::math::dim::null. identity
of fcppt::math::matrix::object to fcppt::math::matrix::identity. fcppt/math/sphere/comparison.hpp
. null
of fcppt::math::vector::object to fcppt::math::vector::null. fcppt::make_unique_ptr_fcppt
to fcppt::make_unique_ptr. CMake
BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0
which has not been used for a long time. fcppt::algorithm::array_fold
and fcppt::algorithm::enum_array_fold
which were only useful in C++11
. fcppt::container::find_exn
in favor of fcppt::optional_to_exception
. fcppt::container::grid::object::at
in favor of fcppt::container::grid::at_optional. fcppt::container::grid::is_square
which is covered by fcppt::math::dim::is_quadratic. fcppt::container::grid::iterator_position
which was unused and probably broken. at()
and empty()
from fcppt::container::enum_array
. begin
/end
, front
/ back
, etc, and so on. std::swap
. fcppt::math::vector::project
and fcppt::math::vector::orthogonalize
. fcppt::signal::scoped_connection
which was a typedef to fcppt::signal::auto_connection const
. fcppt::make_unique_ptr
which used to create a std::unique_ptr
. fcppt::time::parse_time
and fcppt::time::parse_date
. fcppt::variant::object::get_exn
. Use the free function fcppt::variant::get_exn
instead.