2009-02-18 2 views
5
std::sort(range(c)); 

в отличие отC++ 0x: Перегрузки диапазона для стандартных алгоритмов?

std::sort(c.begin(), c.end(); 

Вы ожидаете следующий стандарт для обеспечения перегрузки диапазона для стандартных алгоритмов?

Boost's range iterators что-то похожее, и упоминания в TC++ PL3e от Bjarne Stroustrup's iseq() s - тоже та же идея. Я просмотрел the latest draft I could find, но не видел упомянутых перегрузок диапазона.

+0

EDIT: Я нашел это: www-sop.inria.fr/geometrica/events/WG21_meeting_june_2008/Stroustrup_C++0x_overview.ppt (или s/ppt $/pdf /). Это из выступления Струструппа в июне 2008 года на совещании РГ21. В слайде 30 он упоминает эти перегрузки, но неясно, запланированы ли они для стандарта. – wilhelmtell

ответ

4

На странице History представлен частичный ответ.

Должна быть настоятельная необходимость добавления перегрузок в пространство имен std. Обратите внимание, что это проблема библиотеки. Вы можете выполнить поиск в архивах, чтобы узнать, добавляет ли кто-нибудь ранее запрос на их добавление в библиотеку. Если нет, вы можете отправить отчет о дефекте. Текущий язык никоим образом не мешает вам писать собственные обертки. Таким образом, вопрос сводится к тому, что многие другие также захотят это использовать в качестве стандартной библиотеки , поддерживаемой библиотекой или нет. Но это еще не все. Любое расширение, даже в библиотеку, - это не просто технический выбор, но и руководствоваться многими другими геополитическими проблемами. Вы должны иметь определенное количество голосов, чтобы получить это.

Честно говоря, мне бы очень хотелось, чтобы это произошло. Однако помните, что это никоим образом не является новой/основной функцией, которую библиотека не может сделать без. Итак, держи пальцы.

+1

Я считаю, что читаемый и сжатый код не менее важен и важен, чем четкие и сжатые сообщения об ошибках, за которые проголосовали концепции (изменение языка!). Я думаю, что диапазоны будут способствовать использованию STL. Я надеюсь, что люди в комитете по стандартам С ++ думают одинаково. – wilhelmtell

+0

Мандатирование единой перегрузки в стандартном исполнении - это нелегкая задача: он включает в себя, чтобы каждый поставщик компилятора предоставлял исправления для своей среды выполнения, библиотеки -> увеличенное время выхода на рынок -> стандарт либо никогда не принимался из-за задержки, либо следующая версия готово ... Вы получаете дрейф – dirkgently

0

Цикл, основанный на диапазоне, является единственной вещью в черновом стандарте, который я могу найти, который использует концепцию Range. Мне кажется естественным, что большинство стандартных алгоритмов могут поддерживать диапазоны, но об этом не упоминается в проекте стандарта, который вы связали.

+0

В главе 23 есть итераторы, основанные на концепции Range в TR2. – greyfade

Смежные вопросы