Как попросить небольшое дополнение? (синтаксис чисто виртуальных функций) - PullRequest
6 голосов
/ 12 мая 2009

В текущем проекте C ++ 0x Я заметил, что они представили несколько новых явных ключевых слов для выделения ожидаемого поведения (отличный ход!).

Примеры: по умолчанию / удалено функций ( = по умолчанию и = удалить ), новая nullptr константа, явное ключевое слово, используемое также для операторов преобразования, ...

Так что я ожидал увидеть также синтаксис = pure для чисто виртуальных функций.

Вместо этого уродливый (ИМХО, конечно) = 0 вещь все еще существует.

Хорошо, я могу использовать # для определения чистого 0 (и иногда я делаю это), но я думаю, что согласованность / последовательность должны определенно быть целью стандарта. Более того, я знаю, что это своего рода ультрапедантичный запрос, но = 0 действительно была одной из моих наименее любимых частей C ++ (эвфемизм) ...

Мои вопросы:

  • Я знаю, что новый стандарт является полнофункциональным, но все же можно ли попросить об этом небольшом педантичном дополнении, даже если это просто "обязательный макрос"?
  • если ответ положительный, как? (кто-нибудь из членов комитета?)
  • Я просто слишком педантичен (или не прав), чтобы спросить это дополнение? Что вы думаете о текущем синтаксисе чисто виртуальных функций?

Ответы [ 5 ]

29 голосов
/ 12 мая 2009

Это не маленькая педантичная смена. Введение нового ключевого слова - одно из самых больших изменений, которые вы можете запросить. Это то, чего они пытаются избежать практически любой ценой. Подумайте обо всем коде, в котором используется слово «чистый», которое может сломаться.

В целом, их руководство состоит в том, чтобы добавлять в язык только то, что нельзя было сделать до . Ключевое слово pure не включало бы ничего нового (в отличие от ключевого слова nullptr, которое, например, обеспечивает лучшую проверку типов), поэтому ожидайте, что оно имеет очень низкий приоритет. Имейте в виду, что все, что они делают, это в основном работы по обслуживанию. Цель № 1 - избежать нарушения языка (или существующего кода, который его использует). Любые добавленные функции добавляются только в том случае, если это можно сделать без нарушения обратной совместимости.

Однако комитет является более или менее открытым форумом. Просмотрите их веб-сайт , и вы сможете найти несколько адресов электронной почты. ИЛИ используйте группу новостей comp.std.c++.

Я верю, что их собрания также открыты, так что вы можете просто пропустить следующий. ;)

5 голосов
/ 12 мая 2009

То, что вы ненавидите больше всего в C ++, это "= 0;" ???

Вы когда-нибудь использовали этот язык? Есть много других вещей, на которые ты мог бы лучше потратить свою ненависть.

<Flame retardant> Я использую C ++ более 10 лет. Для меня это по-прежнему язык выбора, когда мне нужно выполнить некоторые тяжелые вычисления. </Flame retardant>

4 голосов
/ 12 мая 2009

Сначала начните читать comp.std.c++ группу новостей. Это место для публичных обсуждений.

Во-вторых, я бы сказал, что только текущие ошибки будут применены к текущему проекту C ++ 0x, комитет действительно находится на завершающей стадии.

Если вы крайне заинтересованы, сделайте свое предложение в группе новостей с действительно хорошим обоснованием. И ожидайте, что это будет сбито. Существенно более полезные предложения (например, модули) не сделали этого.

Приложение: Если вы хотите, чтобы что-то подобное развивалось, вам нужно будет либо присоединиться к комитету (если есть ANSI), либо найти кого-то в комитете, чтобы выдвинуть ваше предложение.

3 голосов
/ 12 мая 2009

Слишком поздно. Призыв к запросам закончился пару лет назад.

(Была страница, где содержались материалы, но я больше не могу найти этот список.)

2 голосов
/ 14 мая 2009

В дополнение к комментарию jalf о недостатках добавления ключевого слова (с которым я согласен на 100%) следует также отметить, что в информатике фраза pure function уже имеет значение. Это означает, что при одинаковых параметрах функция всегда возвращает одно и то же значение и не имеет побочных эффектов. Поэтому выбор = pure для обозначения виртуальной функции, которая должна быть переопределена, был бы неправильным синтаксическим выбором.

...