给出这个例子:
// "C" function prototype:
void foo(const int*);
// code:
std::vector<int> v;
foo(v.data());
标准是否保证空向量上的v.data()
会产生空指针?我不明白这个措辞:
"The pointer is such that range [data(); data() + size()) is always a
valid range, even if the container is empty (data() is not
dereferenceable in that case)."
我在VS2015上看到它确实产生了一个空指针,但我担心一些实现可能会返回指向vector中某个内部暂存缓冲区的指针。