On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 26.06.13 16:50. Заголовок: Дефект Стандарта C++ относительно класса std::basic_string


В классе std::basic_string имеется один к одному отношение между конструкторами и соответствующими функциями членами класса assign за исключением явного конструктора, так как он не принимает параметра-источника копирования данных.

Среди этих конструкторов имеется конструктор, объявленный следующим образом

basic_string(const basic_string& str, size_type pos, size_type n = npos, 
const Allocator& a = Allocator());
.

Ему в соответствие ставится следующая функция член класса assign

basic_string& assign(const basic_string& str, size_type pos, size_type n);

Как видно, у третьего параметра этой функции отсутствует аргумент по умолчанию, который имеется у аналогичного параметра соответствующего конструктора.

Я не вижу причин, по которым нельзя указать аргумент по умолчанию для этого параметра функции assign.

На мой взгляд это серьезный дефект стандарта С++, и данная функция член класса assign должна определяться следующим образом:

basic_string& assign(const basic_string& str, size_type pos, size_type n = npos ) ;

Пока никаких возражений со стороны членов Комитета по стандартизации C++ я не услышал.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]





ссылка на сообщение  Отправлено: 27.06.13 00:10. Заголовок: Все, что было описан..


Все, что было описано выше относительно функции члена класса assign также справедливо и для таких фцнкций членов класса, как append и insert. То есть их объявления также должны включать аргумент по умолчанию для параметра, задающего количество обрабатываемых символов строки.

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 22.08.13 20:11. Заголовок: Мое предложение по д..


Мое предложение по добавлению аргумента по умолчанию для функций членов класса std::basic_string включено Комитетом по стандартизации в список активных вопросов для стандартной библиотеки C++. Его номер 2268. С текстом предложения можно ознакомиться по ссылке
C++ Standard Library Active Issues List (Revision D84)

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 16.06.14 23:11. Заголовок: Похоже, что мое пред..


Похоже, что мое предложение по устранению описанного дефекта, связанного с отсутствием аргумента по умолчанию в определении некоторых функций класса std::basic_string, было одобрено и войдет в стандарт C++ 2014.

С изменением статуса моего предложения можно ознакомиться здесь

Как сообщил Daniel Krügler мое предложение включено в рабочий проект стандарта (C++ Working Draft) с номером №3936, но пока еще этот документ публично не доступен.

P.S. Как оказалось, есть доступ к этому документу на GitHub. Так что есть шанс загрузить этот документ отсюда

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 3
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет