например boost::function
перемещается почти полностью на std::function
, то же самое происходит с boost::shared_ptr
Но я не могу найти std::any
?
Был ли он переименован или не был помещен в новый стандарт вообще по какой-либо причине?
например boost::function
перемещается почти полностью на std::function
, то же самое происходит с boost::shared_ptr
Но я не могу найти std::any
?
Был ли он переименован или не был помещен в новый стандарт вообще по какой-либо причине?
Не каждая библиотека из boost делает ее стандартной (и даже те, которые могут удалить компоненты). Как правило, комитет довольно консервативен, когда дело доходит до добавления в стандартную библиотеку (поскольку почти невозможно получить что-то удаленное в более поздней точке, если включение было ошибкой (например, потому что есть лучшая альтернатива)).
boost::function
и boost::shared_ptr
, где довольно много данных для включения, так как они уже являются частью tr1
. boost::any
с другой стороны не делал разреза. Однако он может быть включен в стандартную библиотеку позже (например, в следующем техническом отчете, посмотрите здесь). Хотя boost::any
приятно иметь, я бы не оценил его так же важно, как, например, shared_ptr
.
Заключение: boost::any
не является частью С++ 11, так как комитет не видел никакой насущной необходимости включать его
Поскольку вопрос был задан, мы продвинулись в направлении std:: experimental:: any как опция, проголосовавшая из С++ 14 стандарт.
Это было тогда реализовано в GCC 5.1, по крайней мере.
Эта функция была с тех пор стандартизована в С++ 17, что привело к std:: any. См. Также С++ 17 std:: variant для объединения типов, которое либо содержит одну из ограниченных известных типов, либо пусто (спасибо remy-lebeau для наконечника).
Std:: any был недавно принят в стандарт С++ 17:
Я думаю, что позиция по умолчанию состояла в том, что библиотека НЕ включалась в новый стандарт, если только она не была включена, и затем передала комитет.
Я не уверен, что boost:: any был когда-либо представлен. Возможно нет. Однако вы все равно можете использовать boost:: any.
Мое предположение заключается в том, что с перезаписываемыми библиотеками С++ 11 некоторые будут считаться избыточными, а другие будут изменены, чтобы использовать семантику перемещения, списки инициализаторов и авто, написанные в стиле С++ 11 с помощью С++ 11 функций.
Скорее всего, новые библиотеки все будут в С++ 11, но существующие пакеты boost будут храниться как доступные в течение некоторого времени, так как многие из них еще не переключились на компиляторы С++ 11. Я также предполагаю, что только функции С++ 11, которые реализуются всеми основными компиляторами, сначала войдут в пакет.
Это скорее вопрос программистов, чем stackoverflow, и даже лучше для comp.std.С++. Модифицированные и ускоряющие списки рассылки.