Così pochi giorni fa ho imparato a conoscere std :: addressof. A http://en.cppreference.com/w/cpp/memory/addressof è dato una possibile implementazione:std :: addressof - strana implementazione
template< class T >
T* addressof(T& arg)
{
return reinterpret_cast<T*>(
&const_cast<char&>(
reinterpret_cast<const volatile char&>(arg)));
}
Per quanto vedo questo può semplicemente essere implementato come:
template<typename T>
T* addressof(T& var)
{
return &var;
}
Perché i ragazzi di cppreference ha scelto per la sua attuazione con 3 calchi? C'è qualche dettaglio che mi manca che sta migliorando la loro implementazione. Che senso ha usare volatile quando tutto ciò che fai è lanciato?
Il sovraccarico dell'indirizzo dell'operatore interrompe la seconda implementazione. – SirGuy
diamo un'occhiata anche a questo: http://stackoverflow.com/questions/6494591/how-can-i-reliable-get-the-address-of-an-object/6495205#6495205 – NathanOliver