27

所以显然 C++20 正在获得std::to_address.

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

4

1 回答 1

36

std::addressof接受一个对象并获取它的地址,即使一元“地址运算符”(又名&)被重载。

std::to_address接受一个指针,智能或哑,并返回一个指针。

基本上在编写标准库时,在这种情况下分配器,实现者发现他们需要这个实用函数。它小而简单,每当有人想使用分配器时都必须编写它。所以他们写了一个简单的建议来添加它。

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


当他们还没有完成您最喜欢的功能时,为什么要这样做?喜欢网络?

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

然后有人抱怨说他们需要 15 分钟来批准一个不费吹灰之力的实用程序函数,因为多程序员年度史诗提案还没有出现。不公。

或类似的东西。

于 2019-06-07T12:18:11.580 回答