LINUX.ORG.RU

История изменений

Исправление quasimoto, (текущая версия) :

Да я тоже ХЗ о чём ты споришь.

1. vector<bool> это тип который отличается поведением от остальных векторов, контейнеров, его итератор — соответствующих итераторов, в этом смысле он не является обычным вектором, контейнером, его итератор — соответствующим итератором.

2. Является исключительным по стандарту, хотя и не соответствует концептам? Ты согласился с тем, что вся ситуация неправильна и специализация по-хорошему должна быть deprecated. В этом случае я не вижу смысла ссылаться на неправильную часть стандарта которая должна быть deprecated и упираться в «исключительность по стандарту», если мы говорим про «как оно должно было бы быть».

Это по части «не вектор».

3. value_type контейнера совпадает с value type его итератора, который также должен быть forward итератором, то есть operator* должен возвращать ссылку на value type. Итератор vector<bool> не умеет возвращать ссылку на bool.

4. В этой же связи vector<bool> не хранит (l)значений типа bool — если он хранит такие объекты, то должно быть возможно получить ссылку (указатель, адрес) на них, то есть на bool, но нельзя.

Это по части «не bool».

Уже было — http://www.boost.org/doc/libs/1_55_0/libs/iterator/doc/new-iter-concepts.pdf.

Исходная версия quasimoto, :

Да я тоже ХЗ о чём ты споришь.

1. vector<bool> это тип который отличается поведением от остальных векторов, контейнеров, его итератор — соответствующих итераторов, в этом смысле он не является обычным вектором, контейнером, его итератор — соответствующим итератором.

2. Является исключительным по стандарту, хотя и не соответствует концептам? Ты согласился с тем, что вся ситуация неправильна и специализация по-хорошему должна быть deprecated. В этом случае я не вижу смысла ссылаться на неправильную часть стандарта которая должна быть deprecated и упираться в «исключительность по стандарту», если мы говорим про «как оно должно было бы быть».

Это по части «не вектор».

3. value_type контейнера совпадает с value type его итератора, который также должен быть forward итератором, то есть operator* должен возвращать ссылку на value type. Итератор vector<bool> не умеет возвращать ссылку на bool.

4. В этой же связи vector<bool> не хранит значений типа bool — если он хранит такие объекты, то должно быть возможно получить ссылку (указатель, адрес) на них, то есть на bool, но нельзя.

Это по части «не bool».

Уже было — http://www.boost.org/doc/libs/1_55_0/libs/iterator/doc/new-iter-concepts.pdf.