我想知道相同类型的“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。
答案 0 :(得分:0)
引用@hdv。不它不是。 nullptr是特殊类型std :: nullptr_t的文字,它不是整数类型。实际上,nullptr - nullptr是一个错误,因为没有为该类型定义运算符。您需要将nullptr转换为具体的指针类型(就像问题一样),以使减法工作。