Re[3]: Как написать Any с uniform initialization
От: rg45 СССР  
Дата: 28.11.19 22:08
Оценка: +1
Здравствуйте, Molchalnik, Вы писали:

I>>Добавь

I>>
I>>Any( Any& )  {printf("\ncopy2");}
I>>


M>спасибо. поставил плюсик. а почему не происходит best fit на const Any& ? В каком разделе стандарта можно прочитать?


Это особый вид ссылок, известный под кодовым названием Forwarding references. Когда ты используешь для конструирования lvalue выражение, параметр с типом "Тn &&" отображается на тип "Any& &&" (да-да, ссылка на ссылку). После этого происходит так называемый коллапсинг избыточных ссылок, по описанному в стандарте правилу, и получается конечный тип формального параметра "Any&". И этот тип лучше подходит для неконстантного объекта, чем "const Any&".
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 28.11.2019 22:20 rg45 . Предыдущая версия . Еще …
Отредактировано 28.11.2019 22:20 rg45 . Предыдущая версия .
Отредактировано 28.11.2019 22:18 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.