Library of backported modern C++ types to work with C++11
Several minor features have been added to this release, and a few minor fixes.
This contains the following changes:
underlying_type
to SFINAE if type is not an enum
(#18)is_[nothrow_]invocable_r
, which was missing from previous
releaseoptional
span
constructors (#21)
span
-- which was not the
final versionThis is the first official release of the Backport-C++ library!
This implements the following C++ standard types / features with full, tested, compatibility for C++11:
std::span
in <bpstd/span.hpp>
std::optional
in <bpstd/optional.hpp>
std::any
in <bpstd/any.hpp>
std::string_view
in <bpstd/string_view.hpp>
std::variant
in <bpstd/variant.hpp>
std::byte
in <bpstd/cstddef.hpp>
std::bool_constant
in <bpstd/type_traits.hpp>
std::greater<>) in [
<bpstd/functional.hpp>`](https://github.com/bitwizeshift/BackportCpp/blob/v1.0.0/include/bpstd/functional.hpp)std::integer_sequence
in <bpstd/utility.hpp>
std::to_address
in <bpstd/memory.hpp>
std::make_unique_for_overwrite
in <bpstd/memory.hpp>
std::is_nothrow_convertible
in <bpstd/type_traits.hpp>
std::void_t
, std::is_invocable
, std::is_[nothrow_]swappable[_with]
, etc) in <bpstd/type_traits.hpp>
std::not_fn
in <bpstd/functional.hpp>
std::make_from_tuple
in <bpstd/tuple.hpp>
std::apply
in <bpstd/tuple.hpp>
std::invoke
in <bpstd/functional.hpp>
std::uncaught_exceptions
in <bpstd/exception.hpp>
_t
type traits in <bpstd/type_traits>
std::get
for addressing tuples by type in <bpstd/tuple.hpp>
std::exchange
in <bpstd/memory>
std::make_reverse_iterator
in <bpstd/iterator>
std::make_unique
in <bpstd/memory>
In preparation of a 1.0.0 release, this includes a lot of changes from the previous few weeks of development:
is_final
definition, which is not available until C++14make_reverse_iterator
supportuncaught_exceptions
tuple
s by typecomplex
variant
This is a pre-release of the library, which contains much of the C++14, C++17, and C++20 utilities/types compiling and working for all C++ compilers capable of compiling syntactically valid C++11 code.
Notably absent for utility types is std::variant
, which is part of the 1.0.0
milestone.
This is release 0.0.1, geared towards gcc and clang compilers on Linux and Mac.
This is a nearly complete release, missing only bpstd::variant
implementation.
This currently does not compile successfully on Windows for either cl
or clang-cl
This includes the following types:
bpstd::span
bpstd::to_address
bpstd::make_unique_for_overwrite
bpstd::any
bpstd::string_view
bpstd::optional
bpstd::invoke
bpstd::not_fn
bpstd::make_from_tuple
bpstd::apply
bpstd::byte
bpstd::make_unique
_t
convenience traits_v
convenience variables (when compiling with -std=c++14)