因此,显然C ++ 20正在获得std::to_address
。
在cppreference页面上,其用例对我而言似乎并不明确。我们已经有了operator&
和std::addressof
,为什么我们还需要另一个函数来为其参数提供地址?
答案 0 :(得分:27)
std::addressof
获取一个对象并获取其地址,即使一元的“ addressof operator”(又名&
)已超载。
std::to_address
获取一个聪明或愚蠢的指针,并返回一个指针。
基本上,在编写std库时,在这种情况下是分配器,实现者发现他们需要此实用程序功能。它小巧,简单,每当有人要使用分配器时都必须编写它。因此,他们写了一个轻松的建议来添加它。
这里有一些陷阱。您不能执行std::addressof(*ptr)
,因为*ptr
并不总是对象。已经有一个特质可以解决此问题,但是直接使用特质编写代码很烦人。
为什么还没有完成您喜欢的功能呢?喜欢联网吗?
相比之下,网络化并非一帆风顺。当前的设计取决于执行者(基本上是线程池概念的抽象)。编写具有手工C / ASM性能的高级库的目标使编写网络比2行实用程序功能更难。
然后有人抱怨说,他们花了15分钟才能批准一个不费吹灰之力的实用程序功能,因为还没有多程序员年度史诗般的提议。不公。
或者类似的东西。