Учитывая Концепции, помощники SFINAE все еще в спецификации как устаревшие? - PullRequest
0 голосов
/ 28 августа 2018

Похоже, что Concepts может делать все, что вы могли бы сделать, используя методы на основе SFINAE, только намного лучше. Список преимуществ включает в себя повышенную читаемость разрешение перегрузки и возможность сделать диагностику компилятора существенно менее многословным.

Один вариант, учитывая, что все эти Concepts 'функции уже уже являются частью нового проекта , заключается в том, что некоторые или все эти Вспомогательные шаблоны SFINAE будут объявлены устаревшими.

Моя главная проблема здесь - фрагментация функций .

У меня вопрос, действительно ли такое предложение об амортизации было подано?

1 Ответ

0 голосов
/ 28 августа 2018

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

Даже удаление триграфов и преобразование строкового литерала в непостоянный char* заняло довольно много времени, и, по крайней мере, первое не было даже бесспорным. (IBM хотела сохранить их в iirc.) Эти шаблоны имеют и имеют действительное использование в современном C ++; они здесь, чтобы остаться .

Обратите внимание, что отказ от функции в стандарте C ++ - это довольно радикальный шаг, поэтому он рассматривается для последующего удаления. Это должно быть временное состояние; либо функция удаляется в какой-то момент, либо восстанавливается как устаревшая:

С выпуском нового стандарта C ++ мы получаем возможность вернуться к функциям, определенным для устаревания, и рассмотреть вопрос о том, готовы ли мы к его устранению, либо полностью исключив его из стандарта, либо изменив решение об устаревании и восстановление функции до полного обслуживания.

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

С P0619R3 , подчеркните мое.


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

...