我正在阅读文档std::any_cast
,我发现 API 的强制转换要么返回一个值到所持有的对象,要么返回一个指向它的指针,这很奇怪。为什么不返回参考?每次使用非指针类型参数调用函数时都需要进行复制。
我可以看到强制转换的指针版本可能会更多地表明意图并且可能更清楚一些,但是为什么不将返回的值作为这样的引用呢?
template<typename ValueType>
ValueType& any_cast(any* operand);
代替
template <typename ValueType>
ValueType* any_cast(any* operand);
此外,即使您要求引用,演员也会删除引用并将副本返回到存储的对象,请参阅此处http://en.cppreference.com/w/函数重载 1-3 的返回值的解释cpp/实用程序/任何/any_cast