Как мне найти версию C ++, в которой конкретное требование было удалено или изменено? - PullRequest
0 голосов
/ 12 января 2019

Позвольте мне привести конкретный пример, чтобы прояснить, что именно я имею в виду.

У меня есть два варианта стандарта C ++: N4296, который сейчас довольно старый, и более поздняя версия N4750. Есть несколько подразделов, которые меня интересуют, например, [Unord.hash]. Версия N4296 требует от std::hash предоставления двух вложенных типов argument_type и result_type, но это требование больше не присутствует в N4750.

Как я могу найти ревизию, где это требование было удалено и мотивация для него?

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Другой источник, который вы можете использовать: cppreference . Они очень хорошо показывают, что отличается в разных версиях стандарта. Например, на странице std::hash указано, что argument_type и result_type устарели в C ++ 17 и удалены в C ++ 20. Имея эту информацию, вы, по крайней мере, знаете, что удаление произошло в версии стандарта между C ++ 17 и C ++ 20, а это гораздо меньше версий для просмотра.

Кроме того, по крайней мере в некоторых разделах , если был отчет о дефектах, на странице также будет ссылка на этот отчет о дефектах.

Вам все равно придется поохотиться, но, надеюсь, это сузит его для вас.

0 голосов
/ 12 января 2019

Это может быть довольно сложно.

Отдельные редакции

Во-первых, есть список закрытых основных языковых проблем (и эквивалентная страница для проблем с библиотекой), которая дает вам бумажный справочник и некоторую информацию о дате.

Есть рассылки рабочей группы .

Существует источник стандарта , историю которого можно изучить с помощью инструментов Git и их друзей. Теоретически журнал коммитов должен быть полезен & mdash; хотя я рекомендую записать название (например, слово "N3690" ) окончательного варианта для каждого стандарта, чтобы его можно было распознать в списке тегов.

Это ваша лучшая ставка, если вы буквально ищете конкретную ревизию, в которую было внесено изменение.

Между стандартами

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

Для мотивации вы будете искать оригинал предложения. Если вам удастся найти черновик пересмотра, в котором было внесено изменение, возможно, кто-то сделает перекрестную ссылку на имя / идентификатор предложения.

Я также считаю, что Google дает некоторые хорошие результаты при поиске этого, если у вас уже есть смутное представление о его содержании: например, Msgstr "C ++, если определение объявления для согласованного предложения".

И, если вы не возражаете против неавторизованных источников (которые, тем не менее, должны быть надежными), обычно есть ответы переполнения стека, которые отслеживают изменения между стандартами C ++ со ссылками на соответствующие статьи. Например, это ответ на «Каковы новые функции в C ++ 17?» , который ссылается на изменения в std::hash, которые вы упомянули.

...