nullptr的区别

时间:2015-01-26 08:27:15

标签: c++11

我想知道相同类型的“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。

1 个答案:

答案 0 :(得分:0)

引用@hdv。不它不是。 nullptr是特殊类型std :: nullptr_t的文字,它不是整数类型。实际上,nullptr - nullptr是一个错误,因为没有为该类型定义运算符。您需要将nullptr转换为具体的指针类型(就像问题一样),以使减法工作。