Changed how vector_data works. (#4467)

In some debug environments using vector[i] does bounds checking even
though the standard specifies that it should not. Using
*(vector.begin()) sidesteps this though, giving the same result without
the bounds checking.
This commit is contained in:
Alex Ames 2017-10-20 16:49:15 -07:00 committed by Wouter van Oortmerssen
parent f2627e16ac
commit 97face1527
1 changed files with 4 additions and 2 deletions

View File

@ -41,12 +41,14 @@ inline char string_back(const std::string &value) {
// Helper method that retrieves ::data() from a vector in a way that is
// compatible with pre C++11 STLs (e.g stlport).
template <typename T> inline T *vector_data(std::vector<T> &vector) {
return &(vector[0]);
// In some debug environments, operator[] does bounds checking, so &vector[0]
// can't be used.
return &(*vector.begin());
}
template <typename T> inline const T *vector_data(
const std::vector<T> &vector) {
return &(vector[0]);
return &(*vector.begin());
}
template <typename T, typename V>