在根据可用的规范in this Wiki实现C++ 17的std::any
时,我偶然发现了一些对我来说似乎毫无意义的东西:
自由函数std::any_cast
的In the definition,用于从std::any
实例检索值,提供了 r值引用的重载(这是第三个):
template< class ValueType >
ValueType any_cast(any&& operand); // (3)
现在,大纲下方列出了一个要求,该要求适用于重载2和重载3(这也意味着包括r值重载):
定义似乎实际上并未允许 move 数据!
该函数调用只是重定向到基于指针的重载。有关
operand
的临时性质的信息会丢失! 是否打算我不能移出任何实例?这只是Wiki中的错误吗?我在这里错了吗?
最佳答案
在撰写本文时,问题是 WP 的状态which means:
有关更多信息,请参见此处的lwg:http://wg21.cmeerw.net/lwg/issue2509
拟议的决议确实是
列出WP的缺陷报告列表为:http://cplusplus.github.io/LWG/lwg-defects.html#2509