Каков статус std::vector::data()?

#stl #standards-compliance #stdvector

#stl #соответствие стандартам #stdvector

Вопрос:

Я только что понял, что использовал std::vector::data() из-за сходства с std::string, но коллега указал, что это не стандартно.

По-видимому, Gcc реализует это, но, просматривая его включаемые файлы, я нашел этот комментарий:

   // _GLIBCXX_RESOLVE_LIB_DEFECTS
  // DR 464. Suggestion for new member functions in standard containers.
  // data access
  

Мои вопросы:

  • широко ли этот метод реализован другими компиляторами?
  • включен ли он в C 0x?

(Мне также интересно, что DR 464 это такое, а также _GLIBCXX_RESOLVE_LIB_DEFECTS в этом отношении, но я мог бы также задать другой вопрос для них).

Комментарии:

1. Это тоже поразило меня вчера, но, по-видимому, amp;(vector. front()) даст вам тот же результат, что и вызов vector.data(), и является стандартным.

2. В c 0x data() == amp;front() для непустых векторов в соответствии с моей копией стандартного документа.

Ответ №1:

Я не могу прокомментировать текущие реализации компилятора, но, взглянув на стандарт c 0x n3290.pdf, он указан в 23.3.6.4.