to_address 的具体用例

Specific use case of to_address

显然 C++20 正在 std::to_address

从 cppreference 页面上看,它的用例对我来说似乎不太清楚。我们已经有了 operator&std::addressof,为什么我们还需要另一个函数来为我们提供其参数的地址?

std::addressof 采用 object 并获取其地址,即使一元 "addressof operator"(又名 &)已过载。

std::to_address 接受一个指针,智能或愚蠢,returns 一个指针。

基本上在编写 std 库时,在这种情况下分配器,实现者发现他们需要这个实用函数。它很小,很简单,只要有人想使用分配器就必须编写它。所以他们写了一个no-brainer提案来添加它。

这里有一些陷阱;你不能做 std::addressof(*ptr) 因为 *ptr 并不总是 object。已经有一个 trait 可以解决这个问题,但是直接使用 traits 写代码很烦人。


为什么他们还没有完成您最喜欢的功能?喜欢网络?

相比之下,网络不是 no-brainer 提案。而当前的设计依赖于执行器(基本上是线程池概念的抽象)。编写提供手工 C/ASM 性能的高级库的目标使得编写网络比 2 行实用函数更难。

然后有人抱怨他们需要 15 分钟来批准 no-brainer 实用功能,因为多程序员年的史诗提案尚未提交。不平.

或者类似的东西。