Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins

Commit 2020-07-25 - Bugfixes and helpers for C++98.

Bugfixes and improvements on MSVC 2005, OpenWatcom compatibility. Leaf check-in: 9229196f user: luismachuca tags: release, y2020, bugfix

Commit 2020-07-24 - Fixes for C++20, Clang and MSVC.

Promotes ssize(), de-promotes make_array(), adds and fixes features to use under more recent Clang and MSVC versions. check-in: 22a54863 user: luismachuca tags: clang_min_400, gcc_min_408, msvc_min_1600, release, stable, y2020

Commit 2020-07-20 - One (1) is the lowest biggest thing.

Fixes a few issues in algorithm and adds to the base feature set. check-in: e6c8807a user: luismachuca tags: clang_min_400, y2020, gcc_min_505, pre-release

Commit 2020-06-18 - MSVC compatibility fixes and Geany-tag fixes.

Changes in CHANGELOG.txt. check-in: 98e4fb9c user: luismachuca tags: trunk, clang_min_400, gcc_min_408, msvc_min_1600, y2020, geany_tags, tagfiles

Commit 2020-06-12 - Not the isolation that kills your commits
  • cxxomfort: Fixed an error with the previous release where cxxomfort's cstdint is ignored and a potentially non-existing stdint.h is included in MSVC < 2010.
  • cxxomfort: Now implements a SD-6 header that tests for and backports some of the SD-6 support macros.
  • cxxomfort: Added cxxo-utils.hpp with some base utilities.
  • cxxomfort: Added outp<T>.
  • cxxomfort: Added CXXO_TYPEOF_OR(), CXXO_AUTO_OR macros.
  • algorithm: Added fix / helper ct_clamp.
  • cerrno: New implementation of errc picks most enumerator values and errno names from the underlying system.
  • system_error: Minor simplifications to the code when in C++<11.
  • library:array_ref: Now supports index types shorter than size_t (via default template parameter), for eg.: small-buffers.
  • library:fixed_vector: Now supports index types shorter than size_t (via allocator), for eg.: short-allocator or small size vectors.
  • library:typesafe_enum: Fixed a missing dependency in C++<11.
  • library:tuple: Fixed implementation of tuple_shift for C++03.
  • library:tuple: Fixed a bug in tuple_pop where the first element of the returned tuple would always be default-constructed.
  • tags: Updated tags.
check-in: 70919e9e user: luismachuca tags: trunk, clang_min_400, gcc_min_408, release, y2020, geany_tags, msvc_min_1700
Commit 2020-02-27 - The 27F Release [1].
  • cxxomfort: No longer needs or uses a TR1 forwarder. Note this is a breaking change. (Closes: [5a9e81910e]).
  • cxxomfort: Base components now no longer rely on any header inside impl/.
  • cxxomfort: portable stdint header moved to new vendor/ folder.
  • cxxomfort: explicit_cast support now correctly checked in when Clang announces explicit operators as an extension, for compatibility and for avoiding warnings (Enhances: [f245681931]) (See also: [1cbdc0b48d], [5ba7743db6)). * functional: Added missing namespace std connection to <tt>invoke</tt>. * functional: Added partial <tt>invoke</tt> emulation for C++03. * functional: <tt>invoke()</tt> implementation moved to its own file for clarity. * functional: <tt>invoke()</tt> now uses std version when in C++>=17. * ostream: Added, with implementations of <tt><ostream></tt>-dependent functionality in other headers. * string_view: Now works with Open Watcom (Enhances: [b8ea55b791]).
  • tuple: Partial implementation of tuple_cat for C++03.
  • type_traits: Added is_[bounded/unbounded]_array from C++20.
  • type_traits: Added remove_cvref from C++20.
  • type_traits: Added remove_all_extents from C++11.
  • type_traits: Added fix to_bool(), to_integral() for pre-C++11 integral_constant.
  • type_traits: Enabled OpenWatcom to default missing intrinsics to false_type when using cxxomfort's internal TR1 (Enhances: [b8ea55b791]).
  • utility: Changes to integer_sequence implementation to compile better under C++11.
  • utility: integer_sequence now uses std version when in C++>=14.
  • library:algorithm: Add is_clamped from p1440 .
  • library:algorithm: Add clamp_halfopen and is_clamped_halfopen, half-open interval clamping operations complementary to std::clamp.
  • library:tuple: Partial implementation of tuple_pop, tuple_shift for tuples up to 5 elements.
  • library:tuple: Now clearly exposes types for tuple pop, push, shift and unshift operations.
  • impl: Moved type_traits from util to the impl directory.
  • impl: Reworked type_traits.

This is the first "major" release of cxxomfort for 202x and thus it is marked as release and trunk. Users pulling from the default repo should be able to upgrade automagically.

There are a number of major, "shaking" changes starting with this version which feature what could be considered the "final" structure for the project. Among the most important:

* The baseline is now more streamlined. In fact, it is possible from now on to set up a minimal base with only the cxxomfort basics by keeping only these five files and folders:
cxxomfort.hpp, base.hpp, config.hpp, base/, config/. * Starting this version cxxomfort no longer requires a TR1 forwarder (and in fact, might not even work with one) when working with compilers in pre-C++11 mode that require one (see Per-Compiler Notes in the wiki). * Conversely, when needing a TR1 implementation (such as in pre-TR1 compilers), the library now honors the previously unsupported macro CXXOMFORT_USE_INTERNAL_TR1 which enables automatically a minimum TR1 featureset. * The compiler now discerns between a C++98/03 mode with TR1 support available ("C++2007"), normal C++98 mode, and a C++ mode without C++98 support ("pre-1997"). This distinction is mostly relevant for compilers such as MSVC <= 2008 and OpenWatcom. * Some files from external sources are now moved to a vendor directory space. * When on Windows, the library now requires and enforces the value of the __STDC_LIMIT_MACROS macro.

This release has been tested on: GCC 4.6 to 5.5 in C++03 mode; GCC 4.6 to 6.0 in C++11 mode; GCC 6 in C++14 mode; MSVC 2008 SP1; MSVC 2012; MSVC 2013 (partially); clang 3.0 to 3.4 in C++03 mode; clang 3.2 to 4.0 in C++11 mode; clang 4.0 in C++14 mode; Open Watcom CI release (partial).

The autogenerated documentation ( is updated for this release.

Planned updates for the future:

  • Evaluating in full invoke() for C++03.
  • Backporting shift operations from <algorithm> down to at least C++11.
  • Backporting bind_front() down to at least C++11.
  • Backporting bit_cast() down to at least C++11.
  • A true arithmetic type with sizeof()==1 (à-la signed/unsigned char).
  • p0192 "short floats" (16-bit floating point types for storage only).
  • p1402 "cstring_view" (view of native C++ strings).
  • Refining is_contiguous_sequence.
  • "Moving" accumulate and partial_sum as per p0616.

[1] "27F": The release coincides with the 10th anniversary of the 27F Event or Great Cobquecura Earthquake of 2010 (2010-02-27): see . This is why I say it is a shaking release. check-in: 4dad71eb user: luismachuca tags: trunk, clang_min_302, release, y2020, gcc_min_406, msvc_min_1500, openwatcom_min_200

Commit 2020-02-04 - Compatibility improvements for MSVC 2012, GCC 6.x [2]
  • Fixed missing hexdump.hpp.
check-in: 2e1ff340 user: luismachuca tags: gcc_min_408, release, y2020, tagfiles, msvc_min_1500, gcc_max_605, msvc_max_1700
Commit 2020-02-04 - Compatibility improvements for MSVC 2012, GCC 6.x.
  • cxxomfort: Added better compatibility with GCC in C++14 mode (Enhances: []).
  • cxxomfort: Added better detection of MSVC 2012 and MSVC 2013 (Enhances: [70b70d8017]).
  • cstddef: Moved CXXOMFORT_IMPLEMENTS_decltype from utility.
  • cstddef: Moved to_byte to fixes (cxxomfort::fix).
  • ctime: Now uses POSIX timespec functions when in POSIX env.
  • ctime: Now implements timespec_get() in terms of GetSystemTime() when in Windows env.
  • memory: Fixed make_unique double / conflicting definition in GCC C++14 emulation mode (Enhances: []).
  • numeric: Fixed an issue where the template argument names for gcd, lcm cause conflicts in MSVC >= 2010.
  • string_view: Fixed a copy-ctor and assignment compilation error due to partial constexpr support (see library:array_ref).
  • string_view: Fixed missing reverse iterators.
  • system_error: Fixed an issue where code including the header would not compile if it was the only backported header it was using.
  • tuple: Fixed get<type>(tuple<...>) not being backported to C++11 in GCC≥5.
  • tuple: Fixed get<type>(tuple<...>) clashing with GCC 6.x in C++14 emulation mode (__cplusplus==201500) (Enhances: []).
  • tuple: Fixed make_from_tuple not being backported to C++11, C++14 in GCC≥5.
  • utility: moved CXXOMFORT_IMPLEMENTS_decltype to cstddef.
  • library:algorithm: Added [any,all,none]_on.
  • library:array_ref: Made front, back noexcept where available.
  • library:array_ref: Added size_bytes member function, adapting from C++20 span.
  • library:array_ref: Added a workaround for GCC bug on "defaulted declaration differs" for GCC < 7 (see [E1])
  • library:array_ref: Added missing operator==, operator!=.
  • library:functional: Fixed anachronistic parameter passing in constant_fn().
  • library:numeric: static_min, static_max now take up to 10 arguments.
  • library:utility: Added hexdump, hexload.
  • library:utility: Added utility typedefs bytes_view, const_bytes_view and utility function as_bytes_view().

[E1] check-in: f22f0a4b user: luismachuca tags: gcc_min_408, release, y2020, tagfiles, msvc_min_1500, gcc_max_605, msvc_max_1700

Commit 2020-01-13 - The “don't ask me for documentation fixes, I don't have 2020 vision” release.
  • cxxomfort: Added detection of Clang 4.x with some features.
  • cxxomfort: CXXOMFORT_VERSION now copies CXXOMFORT_DATE.
  • config: Slightly improved detection of Clang __has_extension.
  • algorithm: Fixed any_of returning always true (Fixes: [98efdadf5b]).
  • functional: Fixed missing connection of documentation for heterogeneous functors.
  • iterator: Defined and documented the behaviour of fix:is_contiguous_access_iterator for "checked" iterators.
  • limits: Fixed missing documentation for integral_limits.
  • memory: Fixed documentation for the to_bool fixes.
  • system_error: Fixed Doxygen marking for the category functions.
  • library:functional: Fixed missing connection of documentation for heterogeneous functors.
  • library:iterator: Added at_or() adapter.
  • library:tuple: Fixed missing Doxygen marking for tuple_pop, tuple_shift.
  • library:utility: Added valcmp (also in library:algorithm).
  • library:array_ref: Fixed constructors in accordance to n3334.
  • library:function_ref: Added support for 3, 4, 5-args functions.
  • library:typesafe_enum: Corrected default constructor as per [expr.type.conv] and .
  • tags: Added tags for new features in library:functional.
  • tags: Updated cxxomfort tags for new fix / assists.
  • tags: Removed references to CXXOMFORT_VERSION.
  • doc: Updated autogenerated documentation.
  • LICENSE: Now reflects year 2020.
This release marks the opening of (pre-)releases to be marked with the 'y2020' tag.
check-in: 4817fec6 user: luismachuca tags: trunk, gcc_min_404, release, y2020, msvc_min_1500, clang_min_303
Commit 2019-11-11 - .at() the end of year _or close.
  • cxxomfort: CXXOMFORT_CXX_EMULATION now returns >=2007 for C++98/03 mode with TR1, where possible.
  • cxxomfort: library is now **not** included autimatically. It must be included explicitly even with cxxomfort.hpp.
  • algorithm: Added count, count_if from C++20 (fixes: [ac8af64591]).
  • algorithm: Tentatively marking find, count algorithms as constexpr for C++14.
  • array: Fixed a wrong call to lexicographical_compare in pre-TR1 implementation.
  • iterator: Added contiguous_iterator_tag. Note that pre-C++17 Standard code would not know how to use it.
  • iterator: Added make_reverse_iterator from C++14.
  • random: Fixed a missing cxxomfort::fix in certain compilers in C++11 mode (enhances: [5ba7743db6] Clang-4.x support, GCC-6.x support).
  • string_view: Added .at_or().
  • library:array_ref: Added .at_or().
  • library:fixed_vector: Added .at_or().
  • library:fixed_vector: Made size, empty accessors constexpr.
  • library:tuple: Implemented variadic versions of tuple_shift, tuple_pop.
  • library:utility: Added make_simple_pair.
check-in: 1dfa7ad4 user: luismachuca tags: trunk, y2019, clang_min_302, gcc_min_404, gcc_max_600
Commit 2019-08-28 - MSVC and the End of <time.h>s as we Know It™
  • config: Fixed namespace placement of ere-TR1 features in MSVC 2010, 2012 (enhances: [70b70d8017]).
  • ctime: Added header with backports for timespec_get.
  • algorithm: Moved copy_if_not out of std and into its proper location in supplement.
  • algorithm: Documentation of algorithms now points to the corresponding cppreference page.
  • ios: Added header, with backport of C++11 io_errc.
  • ios: Added missing left,right manips to ios in OpenWatcom (enhances: [b8ea55b791]).
  • memory: Fixed to_bool of shared_ptr when the latter is unavailable (enhances: [11f57a70cf]).
  • numeric: Added midpoint, from C++20.
  • string_view: Fixed implementation to not use inheritance.
  • string_view: Fixed an issue where it did not include the correct <system_error> implementation.
  • typeindex: Removed a warning of conversion to bool when in MSVC.
  • type_traits: Fixed is_base_of for Clang 2.8, 3.0 (enhances: [1cbdc0b48d]).
  • library:string: ifdef-out the header for pre-C++1997 mode.
  • library:string: Partially extended support for variadic to_string.
  • library:utility: ifdef-out the header for pre-C++1997 mode.
  • library:typesafe_enum: Now default-constructs to 0 to emulate enum class behaviour.
  • tags: Updated with new information on macros.
check-in: 44499e7b user: luismachuca tags: trunk
Commit 2019-08-25 - Looking for a more independent solution.
  • cxxomfort: Warning: this commit breaks for Clang.
  • cxxomfort: Renamed CXXO_COMPILER_SUPPORT_cstd_... to CXXO_CXXSTDHEADER_... .
  • cxxomfort: Reworked some macros related to TR1 and its headers/namespaces to be more uniform.
  • cxxomfort: Taken the first steps in removing the need for a TR1 forwarder, with <array>.
  • array: Fixed detecting an <array> that is not there in MSVC 2005 (enhances: [11f57a70cf]).
  • array: Testing removal of requirement for a TR1 forwarder in the header.
  • cerrno: Added header, with definitions of some later POSIX error code macros for MSVC (enhances: [11f57a70cf]).
  • functional: Fixed visibility of (tr1::)hash when in GCC/Clang with TR1.
  • functional: Added baseline implementations for reference_wrapper, hash when before C++03.
  • random: Fixed detecting a <random> that is not there in MSVC 2005 (enhances: [11f57a70cf]).
  • random: Testing removal of requirement for a TR1 forwarder in the header.
  • type_traits: Testing ability to fake some intrinsics for is_enum, et al, in OpenWatcom (enhances: [b8ea55b791]).
  • system_error: Removed a warning of conversion to bool when in MSVC.
  • utility: Fixed make_integer_sequence et al, to use C++11 using... = where appropriate.
  • library:array_ref: Made def-ctor trivial in C++11 and do the "right thing" in <C++11.
check-in: deb47099 user: luismachuca tags: trunk, y2019, gcc_min_404, pre-release, msvc_max_1700, msvc_min_1599
Commit 2019-08-22 - A forgotten error in <memory>.
  • config: Updated some changes to documentation.
  • memory: Fixed a wrong argument name in uninitialized_default_construct.
  • system_error: Fixed errc not default-constructing to zero in C++03 like enums do.
  • docgen: Improved documentation for library:tuple, library:typesafe_enum.
check-in: d5fcc075 user: luismachuca tags: trunk, y2019, clang_min_302, gcc_min_404, openwatcom_min_200, docgen
Commit 2019-08-14 - Myriad memory and mangling maintenance minuscule fixes.
  • cxxomfort: output_info now takes a FILE* stream.
  • cxxomfort: Fixed month detection in CXXOMFORT_ISODATE().
  • cxxomfort: Fixed wrong usage of explicit_cast when in GCC "C++0x" mode.
  • cxxomfort: Fixed "do-nothing" move emulation in pre-C++03.
  • cxxomfort: Minimum improvements to move emulation in CXX_STD<1997 (enhances: [b8ea55b791]).
  • config: Added detection for _Pragma in some compilers.
  • config: Fixed missing nullptr_t (not nullptr) in Clang 2.8-3.2 for C++11 mode (enhances: [1cbdc0b48d]).
  • memory: Fixed namespace std for make_unique (C++14).
  • memory: Added default_delete to backports (previously internal) (C++11).
  • memory: Added fix:to_bool now also works with shared_ptr.
  • memory: Added fix:malloc_deleter component.
  • memory: destroy and uninitialized_default families moved to their own PR header.
  • random: Added fix:randmo for rand() bias (randmo()).
  • string_view: Made pointers in constructors const.
  • string_view: Added fix:make_string_view.
  • typeindex: Fixed inclusion of TR1 headers.
  • type_traits: Added missing reference to is_convertible from TR1.
  • library:type_name: Fixed [e59985dfdf] (stack buffer realloc with __cxa_demangle).
  • library:type_name: Changed implementation to typeid_demangle() so that user needs to include <typeinfo> explicitly.
check-in: 7df32629 user: luismachuca tags: trunk
Commit 2019-08-14 - Myriad memory and mangling maintenance minuscule fixes.
  • cxxomfort: output_info now takes a FILE* stream.
  • cxxomfort: Fixed month detection in CXXOMFORT_ISODATE().
  • cxxomfort: Fixed wrong usage of explicit_cast when in GCC "C++0x" mode.
  • cxxomfort: Fixed "do-nothing" move emulation in pre-C++03.
  • cxxomfort: Minimum improvements to move emulation in CXX_STD<1997 (enhances: [b8ea55b791]).
  • config: Added detection for _Pragma in some compilers.
  • config: Fixed missing nullptr_t (not nullptr) in Clang 2.8-3.2 for C++11 mode (enhances: [1cbdc0b48d]).
  • memory: Fixed namespace std for make_unique (C++14).
  • memory: Added default_delete to backports (previously internal) (C++11).
  • memory: Added fix:to_bool now also works with shared_ptr.
  • memory: Added fix:malloc_deleter component.
  • memory: destroy and uninitialized_default families moved to their own PR header.
  • random: Added fix:randmo for rand() bias (randmo()).
  • string_view: Made pointers in constructors const.
  • string_view: Added fix:make_string_view.
  • typeindex: Fixed inclusion of TR1 headers.
  • type_traits: Added missing reference to is_convertible from TR1.
  • library:type_name: Fixed [e59985dfdf] (stack buffer realloc with __cxa_demangle).
  • library:type_name: Changed implementation to typeid_demangle() so that user needs to include <typeinfo> explicitly.
check-in: 17ed6f42 user: luismachuca tags: trunk
Commit 2019-02-20 - Minor documentation updates.
  • cxxomfort: Updated /doc/trunk/cxxomfort/LICENSE.txt.
  • cxxomfort: Deprecated some extras/ headers.
  • cxxomfort: Removed the extras/ headers for array_ref, foreach, forward_list and optional.
check-in: 65b214ce user: luismachuca tags: trunk, y2019
Commit 2019-02-15 - Love++ for strings of documentation.
  • cxxomfort: Improved code documentation.
  • cxxomfort: Added Doxygen-generated documentation (see below).
  • memory: Added detection of shared_ptr and other <tr1/memory> utilities for GCC.
  • string: Added missing output operator to std::string under Watcom (enhances: [b8ea55b791]).
  • string: Added to_string support under Watcom (enhances: [b8ea55b791]).
  • string: Added to_string support under MSVC 2005.
  • typeindex: Added minimum std::type_index support under Watcom (enhances: [b8ea55b791]).
  • typeindex: Added minimum std::type_index support under MSVC 2005.

Starting this revision cxxomfort offers a copy of the Doxygen generated documentation for the interfaces via unversioned files. The contents are reachable via /uv/html/.

While compilers like MSVC 2005 and OpenWatcom do not have TR1 and thus are not supported, the current build organizes things so that more of the core features can be used before a hard fail. In particular, byte, declval, string_view, to_string and in the future in a limited manner reference_wrapper, errc and unique_ptr should be at least minimally usable. check-in: b1a27cd4 user: luismachuca tags: trunk

Commit 2019-02-14 - Minor fixes.
  • cxxomfort: Fixed version values.
  • config: Added detection values for type-related compiler intrinsics.
check-in: 6530abeb user: luismachuca tags: trunk, y2019
(no comment) check-in: 26454986 user: luismachuca tags: trunk, y2019, gcc_min_404, msvc_min_1500, msvc_max_1700, gcc_max_505, openwatcom_min_109, testing
Commit 2019-02-13 - Love-- for OpenWatcom; various minor fixes.
  • cxxomfort: Updated CHANGELOG.txt which missed out an update.
  • cxxomfort: Initial compatibility testings for MSVC 2005 compatibility (has no TR1).
  • config: CXXO_INCLUDE_SYS notices got demoted to notice level 3.
  • config: Added basic detection of MSVC 2005 (still not supported).
  • base: Base feature implementation notices got demoted to notice level 4.
  • cstddef: Reimplemented std::byte, with better compatibility for C++<97.
  • cstddef: Added std::byte support for MSVC 2005.
  • array: Added support for MSVC 2005.
  • system_error: Fixed forwarding of @ref cxxomfort::fix::errc for MSVC 2012.
  • type_traits: Added support for the "primary" traits in MSVC 2005.
  • library:algorithm: Add p1223 find_backward().
  • library:algorithm: Add p1223r0 find_not().
  • library:algorithm: Add lwg217 find() (binary predicate form).
check-in: 0ad1617a user: luismachuca tags: trunk, y2019, gcc_min_404, msvc_min_1500, msvc_max_1700, gcc_max_505, openwatcom_min_109, testing
Commit 2019-02-04 - Barebones implementations for C++<1997, and some compatibility fixes.
  • cxxomfort: Fixed identification of OpenWatcom 1.9, 2.0 (Per-Compiler Notes).
  • cxxomfort: Added a separate header for code generation macros.
  • array: Added barbeones feature for Watcom (Per-Compiler Notes).
  • cstddef: Pending extend backport of std::byte.
  • functional: Fixed transparent functors detected in MSVC 2013.
  • random: Disabled temporarily in C++<1997 mode.
  • string: Added operator<< for Watcom.
  • string_view: Reimplemented for C++<1997 mode.
  • string_view: Fixed ostream operator for C++<1997, basic_ostream<char> only.
  • system_error: Disabled in <1997 mode.
  • tuple: Disabled in <1997 mode (Per-Compiler Notes).
  • library: Disabled temporarily in <1997 mode (Per-Compiler Notes).
check-in: d5f10c30 user: luismachuca tags: trunk, y2019, pre-release, msvc_max_1700, gcc_max_505, clang_max_303
Commit 2019-02-01 - All these fixes have some traits in std::common.
  • cxxomfort: Fixed detection of Clang 3.x, 4.x and features.
  • cxxomfort: Fixed detection of namespace tr1 in Clang C++03 mode, STDLIB mode.
  • cxxomfort: Fixed to_byte missing cxxomfort::fix.
  • cxxomfort: Improved documentation.
  • config: Fixed the definition of CXXO_TYPEOF and scenarios.
  • config: Fixed (partial) OpenWatcom seeing C++03 features it can't compile with (templates).
  • cuchar: Fixed detection of typedefs in Clang (< 5.0).
  • functional: Fixed usage of tr1::hash in Clang C++03 mode.
  • memory: Fixed hash<unique_ptr> (C++03, MSVC, Clang).
  • string: Fixed hash<basic_string< > > (C++03, Clang).
  • type_traits: Fixed detection of traits in Clang in C++03 mode.
  • type_traits: Fixed forwarding of common_type for MSVC >= 2012.
  • library: Fixed type_name for Clang (< 5.0).
  • TBA: cxxomfort: Adjust for Clang with LIBCXX, in C++03 mode.
check-in: f5381a77 user: luismachuca tags: trunk, y2019, pre-release, msvc_max_1700, gcc_max_505, clang_max_303
Commit 2019-01-28 - New year, new major, fix::ing some stuff.
  • cxxomfort: Added basic identification for OpenWatcom C++.
  • cxxomfort: Deprecated VERSION.txt.
  • cxxomfort: Removed the deprecated *fn.hpp headers in library/.
  • tags: Updated tags file with new version, containing only the library functions.
  • tags: Added cxxomfort-macros.cpp.tags with the configuration and code generation macros.
  • functional: Moved hash to cxxomfort::fix.
  • random: Added cxxomfort::fix for shuffle_order_engine, knuth_b for MSVC 2010.
  • type_traits: Move cxxomfort's common_type to cxxomfort:fix.
  • type_traits: Fixed cxxomfort::fix::common_type to recurse from the left instead of from the right, as per cppreference.
  • type_traits: Added remove_cvref from C++20.
  • library: Removed make_array_ref.
  • library: Added functional: equivalent_equal_to.
  • library: Moved randint() and related utilities to lfv2 namespace.
  • library: Added utility: simple_pair.
  • TBA: cstdio fix:: for vsnprintf.

This is the first commit to be tagged as "pre-release", in preparation to what could reasonably be called cxxomfort v1.0.

Starting with this version, we'll hopefully also see more isolated, atomic commits, in particular when it comes to features that have to go inside the fix:: namespace. check-in: 4dc2d6a4 user: luismachuca tags: trunk, y2019, pre-release, msvc_max_1700, gcc_max_505

Commit 2018-12-31 - A year ends in function.
  • cxxomfort: Most of the code in Features (not in Supplementals) has been edited to not require using.hpp.
  • config: Fixed an error that undefined "emulation" mode in GCC 4.7 to 4.9 when using "-std=c++11" rather than "-std=c++0x".
  • config: Minor fixed for GCC 4.4, even if still unsupported.
  • array: Added file.
  • functional: Added std::invoke for C++11, C++14.
  • functional: Added std::not_fn from C++17.
  • random: Added std::default_random_engine to C++03.
  • string_view: Removed constexpr from member functions that can't support it in C++11.
  • string_view: Added relational operators.
  • library:algorithm: Added valcmp (generic version of strcmp, memcmp).
  • library:algorithm: Added erase, erase_if from Fundamentals V2.
  • library:functional: Added function_ref from llvm.
  • library:functional: Added function_caller, function_facet.
  • library:random: Added numerical_recipes, MMIX typedefs for lcg.
  • library:random: Added splitmix64, from Sebastiano Vigna.
  • library:random: Added reseed, randint from Fundamentals V2.
check-in: b64fff24 user: luismachuca tags: trunk
Commit 2018-12-22 - Various fixes.
  • cxxomfort: Removed deprecated header files.
  • cxxomfort: Documentation fixes.
  • string_view : Added find, rfind.
  • typeindex: Fixed relational operators which caused compilation error in GCC 03 mode.
check-in: e1adbc84 user: luismachuca tags: trunk
Commit 2018-12-18 - Minor fix.
  • library: Fix inclusion of ssize header.
check-in: e00700a4 user: luismachuca tags: trunk
Commit 2018-12-18 - Hashing out changes and stringing along (3/3).
  • cxxomfort: output_info now uses printf instead of ostream.
  • cxxomfort: Added macros NOTHROW and OPEN/CLOSE_STDTR1.
  • cxxomfort: Fixed implementation of _CONSTRUCTOR generator macros.
  • cxxomfort: Added cuchar, string_view.
  • cxxomfort: Fixed implementations in impl/ to not depend on library/ for easier decoupling.
  • cstd: Fixed byte, typesafe_enum non-dependent on library/, use impl/ instead.
  • config: Added better detection of MSVC 2008 w/o SP1, Digital Mars.
  • config: Added patched header for MSVC 2010 <system_error>
  • cuchar: Added header: char16_t, char32_t backport as typedefs.
  • functional: Added a specialization-friendly version of hash<>.
  • functional: Added cxxostd::hash<> for charn_t types (C++11).
  • functional: Added cxxostd:hash<> for enum types (C++14).
  • memory: Added to_bool assist to unique_ptr.
  • string: Added hash<> spec for u16string, u32string (C++11).
  • string_view: Added header: string_view with a preview interface (C++17).
  • system_error: Fixed missing elements to the interface of error_condition.
  • system_error: Added some missing errc identifiers for MSVC 2008.
  • system_error: Added support cxxomfort::errc to deal with wrong errc defintion in MSVC 2010.
  • library:array_ref: Added new members to array_ref for slicing, substring.
  • library:foreach: Added "auto"-esque for the compilers that can support it.
  • library:iterator: Added the p1227 proposal for global ssize.
  • library:type_name: Changed implementation to use string_view.
check-in: 575605ad user: luismachuca tags: trunk
Commit 2018-11-25 - Heading on, hashing out the future. Preparation for large-scale project changes (2/3).
  • cxxomfort: Added implementation of std::type_index.
  • cstd: Added minimal <typeindex>.
  • functional: Fixed CXXO_IMPLEMENTS_ flag for heterogeneous functors impl (n3421).
  • iterator: Moved cbegin, cend out of base and marked as backports (C++14).
  • iterator: Moved rbegin, rend out of base and marked as backports (C++14).
  • memory: Added missing == nullptr relationals for unique_ptr, to match cppreference.
  • memory: Fixed emplace construct() (move emulation) for allocator_traits, still pending fixes for std::allocator<> support.
  • memory: Fixed hash<> specialization for unique_ptr (C++11).
  • string: Added hash<> specialization for basic_string (C++11).
  • type_index: Added implementation.
  • type_traits: Fixed is_nothrow..., is_trivially... traits in GCC <= 4.6.
  • type_traits: Fixed ...destructible traits in GCC == 4.7.
  • type_traits: Fixed is_final, is_standard_layout for GCC (C++03).
  • utility: Added in_place, in_place_t, etc... (C++17).
  • library: Added strict_type.
  • library: Added string_cast.
check-in: 7bcaa7ae user: luismachuca tags: trunk
Commit 2018-11-11 - Heading on. Preparation for large-scale project changes (1/3).
  • cxxomfort: Fixed add version VERSION.txt which was removed prematurely.
check-in: 746b62a9 user: luismachuca tags: trunk
Commit 2018-11-11 - Heading on. Preparation for large-scale project changes (1/3).
  • cxxomfort: Fixed compilerid flag for MSVC now uses full _MSC_VER number.
  • cxxomfort: Added more comments for automatic documentation.
  • forward_list: Fixed two member initialization order warnings.
  • string: Added missing overloads for integral types short, long.
  • library: All header files renamed to follow the same naming schema as the C++ Standard headers. The old headers are deprecated.
  • library: Added absdistance as an unsigned complement to std::distance.
check-in: ff912e65 user: luismachuca tags: trunk
Commit 2018-11-04 - Fixed repetitions fixed.
  • type_traits: Fixed double definition of is_trivially_ traits.
  • library: Added helper functions arrayref, carrayref.
  • library: Added functions to string: explode, string_replace.
  • TBA: is_constructible.
  • TBA: Moved is_trivially_ , is_noexcept_ traits to a new header.
check-in: 8b94690a user: luismachuca tags: trunk
Commit 2018-10-21 - Doxygening the Way.
  • cxxomfort: Added more documentation blocks for building doxygen docs.
  • cxxomfort: Added documentation macros for supported features (CXXOMFORT_IMPLEMENTS_x)
  • cxxomfort: Fixed `explicit_cast` to not define away in C++11, as that breaks using it in a function call.
  • config: Renamed compiler variables CXXOMFORT_COMPILER_VALUE_x to CXXO_COMPILERID_x
  • config: Renamed cxxomfort variables CXXO_BACKPORT, etc... to CXXO_IMPLSTATUS_x .
  • cstd: Added missing transparent headers for <string>, <memory>, <random>, <numeric>.
  • cstddef: Added `max_align_t` when in C++03 mode (and for MSVC in general).
  • cstddef: Fixed assignments and declarations for std::byte to be closer to C++17, via to_byte.
  • functional: Fixed support for adding bit_and, etc in MSVC 2008.
  • memory: Fixed detection of pointer_traits, allocator_traits in MSVC.
  • memory: Added `destroy_at`, destroy functions from C++17.
  • type_traits: Added enum class backport of std::byte for C++11/14.
  • type_traits: Added C++14 is_final (via intrinsic or false) .
  • type_traits: Improved detection of C++11 is_... traits in MSVC 2010, 2012, some tests still pending.
  • library: Renamed algorithmfn to algorithm.
  • library: Renamed numericfn to numeric.
  • library: Added copy_leftmost_n, copy_rightmost_n to algorithms.
  • library: Added type_traits supplements.
  • library: Added to numeric: `to_signed`, `to_unsigned`.
  • library: Changed implementation of `byte` to perform stricter construction in C++03 and to use native enum class in C++14.
  • library: Added CXXO_GENERATE_RELATIONALS for generating relational operators.

This is a relatively large commit in terms of code changes limited to mostly type_traits related functionality. It also provides better material to construct doxygen documentation.

An important breaking change is that now cxxomfort::cxxostd::byte is no longer constructible from unsigned char; instead, it must always be constructed via to_byte, in line with both C++17 and a number of implementations. check-in: bfec01f8 user: luismachuca tags: trunk

Commit 2018-09-23 - Avoid decay (but not std::decay)
  • config: Fixed detection of MSVC 2008 (wrong version minor).
  • random: Fixed a bug reintroducing the c++03 renames in GCC c++0x mode.
  • type_traits: Fixed an introduced bug in GCC c++0x mode with std::decay already declared.
  • tags: More readability on CXXO_(feature) tags.
check-in: 96a39395 user: luismachuca tags: trunk
Commit 2018-09-22 - Static Library in the Upload
  • random: Added backport for shuffle_order_engine, knuth_b.
  • random: Fixed subtract_with_carry_engine to compile with MSVC.
  • system_error: Added header with minimum capabilities (errc and error_category).
  • type_traits: Moved decay, underlying_type, common_type to their own headers.
  • cstd: Added <system_error> forwarder header.
  • library: Added static math templates to numericfn (static_{min/max/minmax}, etc).
  • library: Added begin, end members to seq_<>, for interoperability.
  • library: Moved non-std functions from cxxomfort::tuple to this set (tuple_pop etc).
  • library: Moved sequence utilities (seq_, etc) to library namespace.
  • library: Moved array_ref from extras.
  • impl/metaprogramming.hpp: Added compose, make_and, make_or.
  • docs: Added lots of comment blocks in the hopes of setting up Doxygen documentation for the future.
check-in: 2f656bdc user: luismachuca tags: trunk
Commit 2018-08-21 - Minmax: Min corrections and Max namespacing
  • config: Introduced namespace 'library' for cxxomfort library extensions.
  • config: Added detection of old-style <functional> binders in preparation for C++20.
  • config: Fixed detection of features in GCC (typeof, enable_if, etc).
  • algorithm: Fixed move minmax, minmax_element to their own header.
  • iterator: Fixed size to be moved to own file and re-implemented as per C++17 std::size.
  • type_traits: Added std::endian support (but unused in this release).
  • type_traits: Added std::bool_constant support.
  • type_traits: Added std::type_identity support.
  • library: Fixed namespacing for CXXO_FOREACH, I12N, variadic to_string, type_name utils, typesafe enum (minor).
  • tags: Updated with library string, algorithm functions.
check-in: d22509b5 user: luismachuca tags: trunk
Commit 2018-08-17 - Corrections for MSVC 2010/2012 compat.
  • config: Fixed detection of MSVC 2010, 2012 features.
  • random: Fixed C++03 feature renames that are for GCC only.
  • string: Fixed missing strto(u)ll in MSVC 2010,2012 fixed.
  • string: Fixed to_string for MSVC 2012.
  • string: Fixed to_string, strtoull overloads for MSVC 2012.
  • type_traits: Added enable_if, conditional moved to their own file and fixed for C++03 support.
  • library: string: Fixed utf8chr function calls.
  • extras: array_ref: Fixed the fixed_vector constructor.
  • Upcoming Changes:
  • Changes to <functional>: functors.
  • Changes to <type_traits>: minimal TR1.
  • Additions to <cstddef>: user defined literals.
  • Additions to <functional>: not_fn.
  • Additions to cstd: <optional>.
  • Additions to cstd: <variant>.
  • Additions to <library/random>: distributor wrappers.
  • Additions to <library/string>: strsprintf.
check-in: 6fe18ebc user: luismachuca tags: trunk
Commit 2018-07-01 - Forward with library improvements, <numeric> and build logs.
  • cxxomfort: Corrected CXXOMFORT_NOTICES in various headers.
  • cxxomfort: Cleared most "typedef unused" warnings.
  • cxxomfort: Most if not all files converted to LF line endings.
  • cxxomfort: CXXOMFORT_DATE now uses full YYYYMMDD format.
  • cxxomfort: CXXOMFORT_NO_STD_USING.
  • cxxomfort: Added numeric.hpp and numerics to library.
  • cxxomfort: Header files also include javadoc code for generating future documentation.
  • library: algorithm: Added inplace_if.
  • library: numeric: Added static_gcd, static_lcm.
  • library: string: Added chr, wchr, utf8chr.
  • library: string: Added split_to.
  • impl: byte is moved to namespace cxxomfort::cstddef.
  • cstdint: Now c++11 emulation mode also relies on pstdint.h.
  • forward_list: Fixed the implementation of insert_after, emplace_after.
  • iterator: Removed warnings about unused typedefs in begin(), end().
  • memory: Updated make_unique as well as its STD requirements to go below C++14.
  • tuple: Removed a warning about aggregate brackets.
  • type_traits: enable_if, conditional moved to their own impl file.
check-in: 5862a10f user: luismachuca tags: trunk
Commit 2017-12-24 - Multuple [sic] improvements with a byte of Saturnalia.
  • cxxomfort: Added <algorithm>, <functional>, <iterator>, <utility> cstd forward headers.
  • cxxomfort: Added <cstdint> cstd forward header.
  • cstddef: Added byte from c++17.
  • library: Added the count_frequencies algorithms.
  • library: Fixed the 7-, 8-, and 9-argument c++03 signatures for to_string.
  • library: Library Utilities in <tuple.hpp> moved to the proper <library/tuplefn.hpp> header.
  • library: Added 6-, 7- and 8- tuple arguments overloads to tuple_pop, tuple_shift.
  • library: Added tuple_visit(function, tuple) (aka foreach for tuples).
  • tuple: Fixed tuple_apply(function,tuple) to correspond as a c++17 backport.
  • tuple: Added make_from_tuple from c++17 (it only works on actual tuples in c++03, c++11).
  • PENDING: library: Add tuple_if
check-in: 0c1dc33f user: luismachuca tags: trunk
Commit 2017-12-19 - Transparent headers and typesafe enum.
  • cxxomfort: Added cstddef.hpp and its transparent header mirror.
  • cxxomfort: Added random.hpp and its transparent header mirror.
  • cxxomfort: Corrected CXXOMFORT_NOTICES in various headers.
  • config: Improved detection of MSVC 2015 (ver 1900) C++ support.
  • config: Improved detection of C++17 mode.
  • library: Added typesafe_enum.
  • random: Renames of the functors in C++03 according to C++11.
  • PENDING: cstddef: Adding std::byte from C++17.
  • PENDING: functional: Fixes to functors, adding not_fn.
  • PENDING: in_place tag for experimental::optional.
  • PENDING: library: strsprintf.
check-in: d2fcaba9 user: luismachuca tags: trunk
Commit 2017-08-11 - Emulation detection fixes (c++0x, c++1y).
  • cxxomfort: Implement a listing of CXXOMFORT_IMPLEMENTS_nxxxx macros.
  • cxxomfort: General fixes to ensure GCC 4.6 compatibility.
  • cxxomfort: Improvements to detection of "c++1y" support (__cplusplus == 2013 or similar).
  • algorithm: Correction to transform_inplace (wrong typename).
  • algorithm: Fixed detection of all_of algorithms in C++0x emulation mode.
  • functional: move functional's fixes for MSVC C++03 to its own header.
  • memory: Fixed detection of required backports in MSVC 2010 (which provides __alignof but doesn't announce it).
  • string: Fixed detection of required backports in MSVC 2010 (which provides a borked to_string).
  • string: Added r_trim, l_trim, trim generics for basic_strings.
  • type_traits: Fixed detection of common_type support.
  • utility: Fixed detection of declval support.
  • extras: Added observer_ptr proposal (n3840).
  • extras: Reimplemented extras::optional, more in line with std::experimental proposal status.
  • tags: Added tags for some free functions made available.
check-in: ef968a6c user: luismachuca tags: trunk
Commit 2017-07-30 - Future version preparation; Library additions.
  • cxxomfort: Preparation for CXXOMFORT_VERSION to be deprecated in favor of CXXOMFORT_DATE.
  • cxxomfort: Added cxxomfort::output_info(Stream&).
  • library: fixed_vector is now def-ctible, swappable and assignable.
  • library: Added algorithmfn.hpp (algorithm helpers).
  • library: Added fundamental.hpp (object wrapper for ints and other fundamental types).
  • library: Added iteratorfn.hpp (iterator helpers).
  • algorithm: moved to its own namespace.
  • algorithm: Renamed the header to "algorithm.hpp" (the old header is still available).
  • algorithm: Added transform_n.
  • algorithm: Added transform_inplace.
  • algorithm: Added find_last_if.
  • functional: moved to its own namespace.
  • iterator: moved to its own namespace.
  • functional: transparent functors now inherit from std:: ones, enabling their use inside std::bind.
  • memory: moved aligned_storage backporting to its own header.
check-in: dc81f185 user: luismachuca tags: trunk
Commit 2017-04-22 - Future version preparation, Proposal additions
  • Version: 0.51
  • Code and file reorganzation in preparation for major release.
  • cxxomfort: Filesystem reorganized now with cxxomfort/ source tree.
  • cxxomfort: Opened a new "library" component.
  • config: Changing structure, as well as meaning of some directives, in preparation for 1.00 release.
  • config: Added impl/pseudovariadic.hpp to be used in the future.
  • base: Some files in base/ are now marked as #pragma system_header in GCC.
  • algorithm: Moved to its own namespace.
  • algorithm: Moved [all_any_none]_of to their own impl file.
  • algorithm: Added c++17's `clamp`.
  • algorithm: Added c++17's `for_each_n`.
  • iterator: Disabled GCC warnings about unused typedefs.
  • string: Added vaiadic to_string / to_wstring proposal - .
  • tuple: Added tuple_pop, tuple_shift for c++11 onward.
  • type_traits: Added c++17's `make_void`.
  • type_traits: fixing templates and helpers for MSVC 2008 (in util/).
  • utility: Added c++17's 'as_const' - .
  • library: Moved in i12n, foreach emulation, localfn, pair03 and type_name.
  • library: Added fixed_vector.
  • extras/foreach.hpp: Moved to library; left-over header will emit warning.
  • extras/forward_list: Moved to library; left-over header will emit warning.
  • extras/localfn: Moved to library; left-over header will emit warning.
check-in: 93870e64 user: luismachuca tags: trunk
Commit 2016-04-14 - Organizational fixes and 'common_type' goodies.
  • Version: 0.49.3
  • config: Fixed some feature detection macros and CXX03/11 distinction macros.
  • config: Removed the deprecated CXXOMFORT_CXX11_MODE macro.
  • config: Fixed usage of renamed feature detection macros in utility.
  • algorithm: is_xxx_of algorithms moved to their own implementation header.
  • algorithm: partition algorithms moved to their own implementation header.
  • cstdint: Updated portable stdint.h (pstdint.h) to
  • utility: integer_sequence, index_sequence moved to their own implementation header.
  • memory: alignof, addressof moved to their own implementation headers.
  • string: Fixes to implementation to make needed functions static and remove MSVC warnings.
  • type_traits: Fixes to common_type:
  • now resolves from the left as per cppreference.
  • c++03: tries to resolve via is_convertible when typeof is not available.
  • utility: Fixed usage of wrong detection macros (see CXXOMFORT_CXX11_MODE).
  • extras/auto: Added a new CXXO_TYPEOF feature to use where CXXO_DECLTYPE would expect an expression instead of a type.
  • extras/localfn: Fixed usage of wrong feature detection macros.
check-in: def09e11 user: luismachuca tags: trunk
Commit 2015-09-09 - Proposal additions and MSVC.related fixes
  • Version: 0.49.1
  • Added: type_traits: make_void (C++17) to C++11, C++14.
  • Added: config: updated configurations for clang 3.x.
  • Added: config: added macro for C++14's relaxed constexpr.
  • Added: tags: .tags file for Geany.
  • Fixed: [37bde24a83] duplicate name linker error due to typeid_demangle.
  • Fixed: [910254d3c2] i12n and const/volatile containers.
  • Fixed: forward_list: details in implementation make it more conformant to C++11.
  • Fixed: type_traits: common_type performs decay, works with clang++.
  • Fixed: type_traits: missing make_signed / make_unsigned in clang in C++03 mode.
  • Fixed: type_traits: recognizing missing is_trivially... traits in clang in C++11 mode.
  • Fixed: impl: typeid_demangle now works with clang++.
  • Fixed: various.hpp if_[any,all,none] traits using variadics in C++03 mode.
  • In-Progress: Preparations to move type_traits, tr1 shortcut headers to their own subproject.
check-in: 2654b55b user: luismachuca tags: trunk
Commit 2015-08-02 - Proposal additions and MSVC.related fixes
  • Version: 0.49
  • Added: config: detection for variadic macros, `__typeof__`, common_type.
  • Added: n3928: static_assert without message.
  • Added: i12n: support for CXXO_I12N_SEQ (initialization via variadic macro).
  • Fixed: i12n: does not allow for creating const/voltile qualified objects.
  • Fixed: iterator: improved support for valarray<>.
  • Fixed: config/msc: removed some dangling macro redefinition warnings from MSVC.
  • Fixed: config/msc: MSVC 2010 wrongly reported by cxxomfort to support = default, = delete.
  • Fixed: impl/type_name: type_name.hpp's `detail_demangle::job` is made static.
  • Fixed: extras/dynarray: removed dangling `swap()`.
check-in: 19c89a45 user: luismachuca tags: trunk
Commit 2015-06-30 - Transparent headers and namespace std.
  • Version: 0.48
  • Added: CXXO_COMPILER_SUPPORT_x set of macros.
  • Added: C++14's "mismatch" to algorithms that was missing.
  • Fixed: array_ref, dynarray, optional all moved to std::experimental, cstd/experimental.
  • Fixed: tuple.hpp's apply works with MSVC 2008.
  • Fixed: make_array warnings with MSVC 2008.
check-in: 067320ae user: luismachuca tags: trunk
Commit 2015-01-05 - Project reorganization part kvin, beta 2.
  • Version: 0.46
  • Fixed: missing gcc, clang configuration files.
  • Fixed: missing move.hpp .
  • Fixed: missing memory.hpp .
  • Fixed: missing extras.hpp .
  • Working on fixing std, emulation identification code.
check-in: e57e681b user: luismachuca tags: trunk
(no comment) check-in: c3c1bd71 user: luismachuca tags: trunk
(no comment) check-in: e21b4077 user: luismachuca tags: trunk
(no comment) check-in: d6608835 user: luismachuca tags: trunk