-
Notifications
You must be signed in to change notification settings - Fork 0
A C++14 template library for all kinds of grammar sugar.
License
doside/Tiny-Cpp-Template-Algorithm-Library
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
这是一个正在开发中的未正式发布的header only的C++14模板库(MIT协议),所有.cpp文件均为测试文件,不需添加到项目中. 文档尚未完善,很多测试还没写好。license也没考虑好,可能会考虑使用MIT license。 设计目标: 糖化一切可糖化之物,简化编程。严格遵守ISO C++14。 当前主要组件: 类boost signal 2的事件信号库及其糖化设施、各种糟糕的元编程设施。 ----------------------------------------------------------------- 基本特性: 变参选择: get<id>(args...) id为任意的size_t常量表达式。 超高效的get实现,对任意索引所需要的时间是一样的,也即间接调用是常数次,大概为2次。 它是便于调试的,并且比std::get+std::tuple这种朴素做法高效很多, 无论是运行时间还是编译时间。特别地,对于大量的参数来说使用make_tuple会直接导致编译崩溃, 而使用Talg::get则可以迅速通过编译。一般而论,在元编程中避免无谓地使用std::tuple可以 使编译速度得到提高。 参数萃取: Transform_t<A<a,b,c,d>,B<e,f,g>>----> A<e,f,g> 有了transform就可以避免无谓的特化以及template template,从而节省编译时间。 当然最重要的是,它提供了极为便利的基本元编程要素,几乎所有元编程库都会有类似的功能 但目前却没人将该重要元语提炼抽象出来。 自动推导出默认的模板参数。 例如:As<std::map<int,int,default_t,Alloc>> 可自动推导出default_t为std::less<int>,不依赖于任何特定模板 (此处使用map纯属巧合,该设施主要用于对付boost库里的一坨参数列表). ----------------------------------------------------------------- 当前支持的编译工具链: VS2015 update3(MSVC14) MINGW64 GCC4.9及后续版本。 NDK(clang3.8 or GCC4.9) todo: 提供可以直接undef所有宏的头文件,并在所有使用了宏的文件的末尾使用之。 修正single list中的assign实现,当前被严重错误地实现为copy constructor了。 修正工程文件对具体路径的依赖,尤其是第三方库(用于编写测试)的设置。 添加自动修正项目设置的程序或脚本。 提供codeblock工程文件。 提供doxygen及cmake支持 添加文档主页面。 添加示例。 更换测试框架doctest为lest,重写所有测试用例。
About
A C++14 template library for all kinds of grammar sugar.
Topics
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published