c++ - Universal reference deduction if the argument is address -


quick query regarding universal references:

let's have code

int q = 10; auto && wtf = &q; 

this 1 compiles fine, have no idea what's happening behind hood. it's taking reference address? isn't pointer's job?

i trying deduce auto&&'s type , did by:

int & test = &q //error int && test = &q //error 

so become? need clarification on what's happening , what's purpose of taking & universal reference? doing because trying understand std::bind since can take address or pointers(which address of being pointed aka pointer's value).

when write &q create temporary value.

an rvalue [...] xvalue, temporary object (12.2) or subobject thereof, or value not associated object. [§ 3.10]

those best bound rvalue references, so

auto && wtf = &q; 

becomes rvalue reference (&& , && stays &&) type of &q. isn't int, it's int *. that's why manual attempt failed.

if instead bind lvalue, local variable, lvalue reference:

int * qptr = &q; auto && wtf2 = qptr; // auto becomes (int *)& // & combined && becomes & 

the whole thing can new seen in action here.


Comments

Popular posts from this blog

android - Gradle sync Error:Configuration with name 'default' not found -

java - Andrioid studio start fail: Fatal error initializing 'null' -

html - jQuery UI Sortable - Remove placeholder after item is dropped -