to_address的特定用例

Som*_*ken 20 c++ address-operator c++20

因此,显然C ++ 20正在得到std::to_address

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

Yak*_*ont 28

std::addressof接受一个对象并获取其地址,即使一元“ addressof operator”(aka &)已重载。

std::to_address 接受一个聪明或愚蠢的指针,并返回一个指针。

基本上,在编写std库(在这种情况下为分配器)时,实现者会发现他们需要此实用程序功能。它小巧,简单,每当有人要使用分配器时都必须编写它。因此,他们写了一个毫无疑问的建议来添加它。

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


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

相比之下,网络化并非明智之举。当前的设计取决于执行者(基本上是线程池概念的抽象)。编写提供手工C / ASM性能的高级库的目标使编写网络比2行实用程序功能更难。

然后有人抱怨说,他们花了15分钟才能批准一个不费吹灰之力的实用程序功能,因为还没有多程序员年度史诗般的提议。不公。

或类似的东西。

  • @SombreroChicken的另一面是,如果您*不*指定所有这些无聊的,详细实现的实用程序功能,这些功能是将`std :: interesting_thing`表示为可移植C ++所必需的,则希望编写`interesting_thing_with_important_difference`的人们会抱怨他们不能做`std`做的事。例如,std :: vector需要一些魔术才能从一堆相邻的对象中创建一个数组,并且不能在用户代码中复制它们。 (6认同)
  • 将普通指针称为傻子真的很聪明...好吧,不是吗? (2认同)