Будет ли std::experimental::Optional‹› поддерживать ссылки?

На данный момент boost::optional<> поддерживает ссылки, а std::experimental::optional<> в моей системе из libstdc++ — нет. Отражает ли это то, что может стать стандартом?

Я знаю, что автор факультативного предложения выделил факультативные ссылки как отдельное предложение, чтобы у основного факультативного предложения было больше шансов быть принятым. Было ли отклонено предложение о дополнительных ссылках или работа над ним была остановлена?


person Praxeolitic    schedule 19.06.2016    source источник
comment
Всегда можно использовать std::reference_wrapper. Поддержка необработанных ссылок открыла бы целый ряд возможностей для того, чтобы выстрелить себе в ногу.   -  person bobah    schedule 19.06.2016
comment
@bobah Я бы упомянул ваш комментарий в своем ответе. Это хорошо для вас?   -  person skypjack    schedule 19.06.2016
comment
@skypjack - конечно :-)   -  person bobah    schedule 19.06.2016
comment
@bobah Хорошее предложение. Есть ли причина, по которой необязательные ссылки чаще оказываются висящими, чем обычные ссылки? Я этого не вижу.   -  person Praxeolitic    schedule 19.06.2016
comment
@Praceolitic - не так просто непреднамеренно прикрепить ссылочную оболочку к контейнеру, как обычную ссылку, и однозначно, что делать, когда контейнеру присваивается значение типа T или значение типа reference_wrapper<T>()   -  person bobah    schedule 19.06.2016


Ответы (1)


Отражает ли это то, что может стать стандартом?

Из рабочего проекта ([20.5.2/1]) :

Программа, которая требует создания экземпляра необязательных шаблонов для ссылочного типа [...], имеет неправильный формат.

Я думаю, это отвечает на ваш вопрос.

Обратите внимание, что вы все еще можете обойти это, используя std::reference_wrapper, как упоминал @bobah в комментариях.

person skypjack    schedule 19.06.2016