Информация об изменениях

Сообщение Re[3]: Как написать Any с uniform initialization от 28.11.2019 22:08

Изменено 28.11.2019 22:20 rg45

Re[3]: Как написать Any с uniform initialization
Здравствуйте, Molchalnik, Вы писали:

I>>Добавь

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


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


Это особый вид ссылок, известный под кодовым названием Forwarding references. Когда ты используешь для конструирования объекта класса lvalue выражение, параметр с типом "Тn &&" отображается на тип "Any& &&" (да-да, ссылка на ссылку). После этого происходит так называемый коллапсинг избыточных ссылок, по описанному в стандарте правилу, и получается конечный тип формального параметра "Any&". И этот тип лучше подходит для неконстантного объекта, чем "const Any&".
Re[3]: Как написать Any с uniform initialization
Здравствуйте, Molchalnik, Вы писали:

I>>Добавь

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


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


Это особый вид ссылок, известный под кодовым названием Forwarding references. Когда ты используешь для конструирования lvalue выражение, параметр с типом "Тn &&" отображается на тип "Any& &&" (да-да, ссылка на ссылку). После этого происходит так называемый коллапсинг избыточных ссылок, по описанному в стандарте правилу, и получается конечный тип формального параметра "Any&". И этот тип лучше подходит для неконстантного объекта, чем "const Any&".