我想知道同一类型的"2具体nullptr“的差值是否保证等于0。我在C++标准中找不到任何可以保证这一点的东西。
template <typename T>
std::ptrdiff_t diff() {
T* p = nullptr;
T* q = nullptr;
return p - q;
}换句话说,这段代码“有”返回0吗?
我问这个问题的原因是我想实现我自己的vector类
template <typename T>
class Vector {
private:
T* data_;
T* size_;
public:
int size() const {
return static_cast<int>(size_ - data_);
}
}我想知道,当我构造一个长度为0的向量时,是否允许放入data_ = size_ = nullptr。
发布于 2015-01-26 16:40:59
只需引用@hdv。不,它不是。nullptr是特殊类型std::nullptr_t的文本,该类型不是整数类型。实际上,nullptr - nullptr是一个错误,因为没有为该类型定义运算符。您需要将nullptr转换为具体的指针类型(就像问题所做的那样),以使减法工作。
https://stackoverflow.com/questions/28146709
复制相似问题