0 可以转换成哪种类型?指针,数字变量。还有其他人吗?下面的 Actor 会安全吗?
ps:迭代器的STL实现摘录
template <class Iterator>
inline typename iterator_traits<Iterator>::difference_type*
distance_type(const Iterator&) {
return static_cast<typename iterator_traits<Iterator>::difference_type*>(0);
}
template <class Iterator>
inline typename iterator_traits<Iterator>::value_type*
value_type(const Iterator&) {
return static_cast<typename iterator_traits<Iterator>::value_type*>(0);
}
最佳答案
各种指针,包括指向函数的指针、指向成员的指针、指向成员函数的指针;算术类型;任何带有 1-arg int
的东西构造器;任何带有 1-arg 构造函数的类型都为 0
可以隐式转换为。可能还有其他我没想到的。
假设iterator_traits
解析为 std::iterator_traits
, 然后 typename iterator_traits<Iterator>::difference_type*
肯定是一个指向对象的指针类型,除非在一个不正确的特化 iterator_traits
的程序中除外。 .所以是的,类型转换有效。
如果你搞砸了并定义了difference_type
或 value_type
作为引用类型,或者根本不是类型,那么您在使用该代码时就会遇到问题。
关于c++ - static_cast 文字 0 到 STL 中的其他类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18713594/