瀏覽代碼

serialize: Deprecate `begin_ptr` / `end_ptr`

Implement `begin_ptr` and `end_ptr` in terms of C++11 code,
and add a comment that they are deprecated.

Follow-up to developer notes update in 654a211622.
tags/v0.15.1
Wladimir J. van der Laan 4 年之前
父節點
當前提交
f00705ae7f
No account linked to committer's email address
共有 2 個文件被更改,包括 11 次插入12 次删除
  1. 1
    1
      src/prevector.h
  2. 10
    11
      src/serialize.h

+ 1
- 1
src/prevector.h 查看文件

@@ -476,7 +476,7 @@ public:
}
}

value_type* data() noexcept {
value_type* data() {
return item_ptr(0);
}


+ 10
- 11
src/serialize.h 查看文件

@@ -44,33 +44,32 @@ inline T* NCONST_PTR(const T* val)
return const_cast<T*>(val);
}

/**
* Get begin pointer of vector (non-const version).
* @note These functions avoid the undefined case of indexing into an empty
* vector, as well as that of indexing after the end of the vector.
/**
* Important: Do not use the following functions in new code, but use v.data()
* and v.data() + v.size() respectively directly. They were once introduced to
* have a compatible, safe way to get the begin and end pointer of a vector.
* However with C++11 the language has built-in functionality for this and it's
* more readable to just use that.
*/
template <typename V>
inline typename V::value_type* begin_ptr(V& v)
{
return v.empty() ? NULL : &v[0];
return v.data();
}
/** Get begin pointer of vector (const version) */
template <typename V>
inline const typename V::value_type* begin_ptr(const V& v)
{
return v.empty() ? NULL : &v[0];
return v.data();
}
/** Get end pointer of vector (non-const version) */
template <typename V>
inline typename V::value_type* end_ptr(V& v)
{
return v.empty() ? NULL : (&v[0] + v.size());
return v.data() + v.size();
}
/** Get end pointer of vector (const version) */
template <typename V>
inline const typename V::value_type* end_ptr(const V& v)
{
return v.empty() ? NULL : (&v[0] + v.size());
return v.data() + v.size();
}

/*

Loading…
取消
儲存