哪种类型可以投射到?指针,数字变量。还有其他人?下面的演员会安全吗?
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);
}
答案 0 :(得分:1)
各种指针,包括指向函数的指针,指向成员的指针,指向成员的指针函数;算术类型;任何带有1-arg int
构造函数的东西;任何带有1-arg构造函数的东西都采用0
可以隐式转换为的类型。可能是我没想过的其他东西。
假设iterator_traits
解析为std::iterator_traits
,那么typename iterator_traits<Iterator>::difference_type*
肯定是一个指向对象的指针类型,除非可能在iterator_traits
的专业化不正确的程序中。所以是的,演员工作。
如果你搞砸了并将difference_type
或value_type
定义为引用类型,或者根本没有定义类型,那么你就会遇到代码问题。