Heng_Xin 学习C++, 并且做实验所使用的项目.
-
长期需更新:
- std的剖析! (包含一些stl源码的实现)
-
01-constexpr
编译期操作
- 编译期if (待更新C++11的基于模版的实现)
- 编译期for (递归/迭代的实现) (内含
std::make_index_constexpr系列
とstd::visit
の秘密) - 玩具: 编译期toString
- 玩具: 编译期求质数、质数筛(性能较差)
-
02-tuple
- tuple (包含
get(tuple)
、tuple_size_v
、make_tuple
、tie
的实现,引用多态真奇妙) - trivially_copyable的tuple
- tuple (包含
-
03-memory
-
04-sort
- sort (一个支持迭代器、谓词的单边快排)
-
05-完美哈希
-
坑:
- std::is_convertible、 is_constructible 实现
-
- 实验 & 学习
- 01-使用模版名称二阶段查找, 规避循环依赖问题 (虽然没有任何实际用处)
- 02-CRTP
- 03-协程
- 暂时不提供示例(因为太乱了), 请见我的笔记: 协程速记
- 04-使用
constexpr
检测UB - 05-深入学习虚析构的各种情况, 并且简单实现了shared_ptr智能指针的类型擦除
- 06-学习全局运算符重载和自定义字面量
- 07-类型萃取
- 实验代码 (实现了
is_void_v
/remove_reference_t
/is_same_v
)
- 实验代码 (实现了
- 08-Lambda
- 实验代码 (
auto&&
做参数的 Lambda, 其实例化后, 类型也是不同的!(相当于延迟实例化了), 因此即便使用模板传参, 模板也一直模板...)
- 实验代码 (
- 09-auto
- 对于auto返回值的讨论 讨论了
auto
、auto&
、auto&&
、decltype(auto)
在各种常见情况下作为函数返回值时候的效果, 对比其不同.
- 对于auto返回值的讨论 讨论了
- 10-临时对象声明周期探索实验
- 11-模板名字查找的实验
- 模板函数与类中的模板函数在重载时候的区别 (全局模板函数指定具体类型时候, 是当场实例化, 不会二阶段查找; 而类中本身就知道本类的所有声明, 因此可以找到后面的方法声明)
- 测试类的特化、偏特化、全特化在某些情况下是否有先后顺序问题 (有, 如果主模板被实例化, 而对应匹配的子模板没有实例化(声明顺序引起的), 就会导致原本期望匹配到特化上的, 却匹配到实例化上) (偏特化可以被二阶段查找, 但是如果指定了特化, 二阶段查找会被提前. 导致问题)
- 类中也有声明顺序的问题(类方法)
- 模板匹配问题: 字符串数组 和 字符指针 隐式转换引发的二义性
- 12-测试反射
- 13-宏魔法学习
(图灵完备的哦)
- std的剖析! (包含一些stl源码的实现)
-
QT
- 01-QML QML-目录 | 笔记: 现代C++QT-QML
-
OpenGL 图形学
-
OS & 平台API
特别的, 下面为实验性质, 存在已知Bug, 并且未修复! 正确实现可以看 https://github.com/HengXin666/HXLibs
- 01-io_uring
- 基于协程的io_uring简易框架(目前是一个 带超时 的
cin
示例)- WhenAny 协程
- UninitializedNonVoidVariant (擦除
void
类型的类型可重复的共用体) (也算的06
的内容...)// @todo 支持从可构造的进行构造, 而不是一定要类型一样 (std::string <- const char *)
- 基于协程的io_uring简易框架(目前是一个 带超时 的
- 02-thread
- 线程池 一个现代的线程池, 支持动态扩容和返回值 (基于C++ STL API)
- 03-iocp
- 基于协程的IOCP简易框架 支持超时机制!
- 01-io_uring
-
赤石C++
- 01-实现一个
<-
左指针运算符 - 02-解决循环依赖无法使用引用的问题 (通过模板二阶段名称查找)
- 01-实现一个