this project is still working-in-progress
don’t support arrray-compare free functions. IOW, Faiz::unique_ptr doesn’t
support https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons_array.cc
Why? you know, compare array with operator </>/<=/>=
...... make no sense at
all. But why does the standard library support? Because they are free
functions
, rather than friend/member function, and array version of
`class_unique_ptr<T[], Deleter>` is specializeed template, so it can use
primary template’s free function. How do I disable them? change free functions
into friend function with class totally_ordered
, but operator <
and
operator ==
are still free functions now.
- STATIC_REQUIRE
http://blog.nuggetwheat.org/index.php/2015/09/01/why-pointer_traits-was-introduced-in-c11/
- implement list with pointer traits
- use gsl’s Expects(preconditions) and Ensures(postconditions)
- use gcc/clang’s modules.
- simplify empty base classes once no_unique_address is available on clang.(it is available on gcc now though)
- use explicit(bool) for pair/tuple once it is available.(gcc 9 has this feature, but I’m too lazy to compile it myself, clang doesn’t work on it yet).
- add `ssize` function http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1227r0.html
- implement useable common_type
typename
orclass
? useclass
for sfinae(template parameter) and nest template, otherwise usetypename
- Faiz::index for all container indexes/subscripts/sizes, IOW, Don’t use unsigned for subscripts, prefer gsl::index
- prefer
and/or
to&&/||
, preserve&&
for rvalue reference. - Geneally, I prefer metafunction over free constexpr function, because the formmer can do more.
- Prefer
enable_if
in function’s template parameter variable.
, see also isocpp/CppCoreGuidelines#1115
os | compiler |
---|---|
Linux | g++-8 |
Linux | clang++-9 |
osx | g++-8 |
osx | Clang++-8 |
windows | MinGw |
I can’t finish a project without stealing code around, so here are the main sources of the code that can be found in this projects when I didn’t write it by myself:
- A great deal of code originally comes from the libcxx/libstdcxx/cppreference implementation of type_traits(rewrite many of them with void_t/detectiom idiom)
- many macros in faiz_fwd.hpp is mainly from range-v3 and yslib
- operators.hpp comes from tao-operators, but rerwite some of codes with cpp17, and remove support for return rvalue reference.
- compressed_pair.hpp is adapted from https://github.com/Morwenn/tight_pair/
- The tests in tests were preliminary tests adapted from libcxx/libstdcxx/tight_pair/tao-operators/range-v3/boost
- std::endian
- p0528R2 The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange ---- tight_pair
- N3974 - Polymorphic Deleter for Unique Pointers – unique_ptr
This library includes(and are most modified heavily) third party open source software components:
- libcxx and libstdcxx(for test files and some traits)
- YSLib
- tight_pair(
compressed_pair.hpp
, for ebco and test cases) - range-v3(for utilities like is_swappable and some meta functions), and
- Catch2(for write test files)
- boost(esp for boost.pp and boost.boost.predef)
- tao-operators(for compare functions, can be replaced with
three-way comparison
if it is available.).
All files mentioned below preserve original copyright at topmost
Kamen Rider Faiz (仮面ライダーファイズ Kamen Raidā Faizu, Masked Rider Faiz) is the main protagonist of the 2003-2004 Kamen Rider Series installment Kamen Rider 555. Its gear is the first of the Rider Gears seen in the series. Its motif is based on the Greek letter phi (Φ).