diff options
author | Adrian Kummerlaender | 2015-02-09 18:20:22 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2015-02-09 18:20:22 +0100 |
commit | 8893f72598040681aec3de58740212c0003fc65b (patch) | |
tree | 84ccfbe97f32304ea3dab8f732fba178db70d574 | |
parent | 709274402ff0a83dfaacae880dfa6db478d29ab1 (diff) | |
download | TypeAsValue-8893f72598040681aec3de58740212c0003fc65b.tar TypeAsValue-8893f72598040681aec3de58740212c0003fc65b.tar.gz TypeAsValue-8893f72598040681aec3de58740212c0003fc65b.tar.bz2 TypeAsValue-8893f72598040681aec3de58740212c0003fc65b.tar.lz TypeAsValue-8893f72598040681aec3de58740212c0003fc65b.tar.xz TypeAsValue-8893f72598040681aec3de58740212c0003fc65b.tar.zst TypeAsValue-8893f72598040681aec3de58740212c0003fc65b.zip |
Updated `README.md` to mention recent features and direction
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | test.cc | 2 |
2 files changed, 6 insertions, 4 deletions
@@ -2,7 +2,7 @@ …is a template metaprogramming library intended for compile time computation written in C++. As its name implies it follows the overall concept of viewing types as values and templates as functions manipulating those values. -This library is currently primarily a reimplementation of my previous attempt at this problem: [ConstList](https://github.com/KnairdA/ConstList). As detailed in the appropriate [blog article](http://blog.kummerlaender.eu/article/a_look_at_compile_time_computation_in_cpp/) the mixed approach between generic lambda expressions, `constexpr` marked functions and template metaprogramming doesn't offer sufficient flexibility which led me to approach compile time computation in a slightly different manner via this new library. +This library is a expanded reimplementation of my previous attempt at this problem: [ConstList](https://github.com/KnairdA/ConstList). As detailed in the appropriate [blog article](http://blog.kummerlaender.eu/article/a_look_at_compile_time_computation_in_cpp/) the mixed approach between generic lambda expressions, `constexpr` marked functions and template metaprogramming doesn't offer sufficient flexibility which led me to approach compile time computation in a slightly different manner via this new library. As one might notice this boils down to using _Scheme_ as a metaphor for C++ template metaprogramming. In fact all test cases and examples are documented by representing their logic in _Scheme_. ## Example @@ -23,16 +23,18 @@ const std::size_t count = tav::Length< * guaranteed evaluation during compile time * basic math and logic operations * conditionals -* `Cons` structure -* `List` function as helper for `Cons` construction +* `Cons` constructor for `Pair` type +* `List` function as helper for `Pair` based list construction * basic list operators such as `Nth`, `Length`, `Take` and `Append` * list generators such as `Iota` and `MakeList` * higher order list operation `Fold` * higher order list operations such as `Map` and `Filter` expressed in terms of `Fold` * higher order list queries such as `Find`, `Any`, `All` and `None` * higher order list generators such as `ListTabulate` +* higher order list operations such as `TakeWhile`, `Partition` and `Sort` * basic partial function application support using `Apply` * `static_assert` based test cases for all of the above +* MIT license ## Requirements @@ -602,7 +602,7 @@ static_assert( tav::Pair< tav::List<tav::Int<1>, tav::Int<3>>::type, tav::List<tav::Int<2>>::type - >::type, + >, tav::Partition< tav::Odd, tav::List<tav::Int<1>, tav::Int<2>, tav::Int<3>>::type |