Сообщение Re[3]: Как написать Any с uniform initialization от 28.11.2019 22:08
Изменено 28.11.2019 22:20 rg45
Re[3]: Как написать Any с uniform initialization
Здравствуйте, Molchalnik, Вы писали:
I>>Добавь
I>>
M>спасибо. поставил плюсик. а почему не происходит best fit на const Any& ? В каком разделе стандарта можно прочитать?
Это особый вид ссылок, известный под кодовым названием Forwarding references. Когда ты используешь для конструирования объекта класса lvalue выражение, параметр с типом "Тn &&" отображается на тип "Any& &&" (да-да, ссылка на ссылку). После этого происходит так называемый коллапсинг избыточных ссылок, по описанному в стандарте правилу, и получается конечный тип формального параметра "Any&". И этот тип лучше подходит для неконстантного объекта, чем "const Any&".
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>>
M>спасибо. поставил плюсик. а почему не происходит best fit на const Any& ? В каком разделе стандарта можно прочитать?
Это особый вид ссылок, известный под кодовым названием Forwarding references. Когда ты используешь для конструирования lvalue выражение, параметр с типом "Тn &&" отображается на тип "Any& &&" (да-да, ссылка на ссылку). После этого происходит так называемый коллапсинг избыточных ссылок, по описанному в стандарте правилу, и получается конечный тип формального параметра "Any&". И этот тип лучше подходит для неконстантного объекта, чем "const Any&".
I>>Добавь
I>>
I>>Any( Any& ) {printf("\ncopy2");}
I>>
M>спасибо. поставил плюсик. а почему не происходит best fit на const Any& ? В каком разделе стандарта можно прочитать?
Это особый вид ссылок, известный под кодовым названием Forwarding references. Когда ты используешь для конструирования lvalue выражение, параметр с типом "Тn &&" отображается на тип "Any& &&" (да-да, ссылка на ссылку). После этого происходит так называемый коллапсинг избыточных ссылок, по описанному в стандарте правилу, и получается конечный тип формального параметра "Any&". И этот тип лучше подходит для неконстантного объекта, чем "const Any&".