⚡ 如你所见,在 awacorn::detail 命名空间内有名为 function 的内部类。它是 Awacorn 的高性能 std::function 实现,用于节省时间/空间成本。
以下是一张优缺点的表格。
| 优点 | 缺点 |
|---|---|
它位于 awacorn/detail/function.hpp,并且无论是包含 event async 还是 promise,都会看到这个类。 |
N/A |
它的速度很快,并且大小是 std::function 的一半(在 gcc 12.2.0 x86_64-linux-gnu 上)。 |
但是它不支持拷贝构造,所以你必须小心谨慎地使用它。 |
它可以包装 std::function。 |
但 std::function 无法用于包装它。 |
它实现了 std::function 几乎所有的接口。 |
但它仍不等同于 std::function,在使用时需要进行很麻烦的转换,还会导致性能损失。 |
💡 有点像 Rust 不是么?
awacorn::detail 命名空间内的成员均是 Awacorn 的 内部类,擅自使用会导致 可移植性降低,并且我们也不推荐这么做。