这是关于C ++语言中的指针和引用类型之间的对称性的一般问题。
此对应关系表在C ++(C ++ 11及更高版本)中有意义吗?
| Reference | Pointer |
|-----------|----------|
| T& | T* |
| T const& | T const* |
| T&& | ???* |
[如果有的话,对应于???*
?。(是否缺少其他行?)]
我想它会对应于std::move_iterator<T*>
之类的东西,但它不是内置语言,并且似乎还会产生许多其他问题(例如std::move_iterator<T*>
一样。]]
语言是否缺少某种r值指针以更加对称?最好说的是在取消引用时生成r值的东西(例如,移动的对象-甚至是副本)。
我知道r值引用对应于“没有名称”的事物,但是,如果仅通过遵从操作std::reference_wrapper
获得相同的事物,这似乎并不具有约束力。
注1:
我看到*
在C ++ 20中已弃用。我不确定这意味着什么,也许意味着它有时可以可选地实现。这个问题与这种弃用有关,因为原则上std::move_iterator<It>::operator->()
可以返回std::move_iterator<It>::operator->()
而不是std::move_iterator<It>::operator->()
。 (或返回???*
,尽管它将生成pointer
运算符的无限回归……除非存在用于r值的真实指针。)
注意2:我可以想象的一个候选缺失行是:
move_iterator<pointer>
但是我认为这与问题中所问的来往无关,而是语言中
->()
的正常异常。
这是有关C ++语言中的指针和引用类型之间的对称性的一般问题。该对应关系表在C ++(C ++ 11及更高版本)中有意义吗? |参考|指针| ----...
没有“指针和引用类型之间的对称性”。或至少没有打算成为一个。您可以根据自己的喜好来解释语言,但是看到的任何对称都是偶然的。
此对应关系表在C ++(C ++ 11及更高版本)中有意义吗?