Недавно в Development был вопрос, на который похоже ответили не до конца
Вот пример для g++ 4.1.2. Я его чуть прокомментирую, и прошу знатоков стандарта меня подправить.
#include <iostream>
int main()
{
int i=1;
// const int* pi=&(i++);
const int& j=i++;
const int* pi=&j;
std::cout << "i=" << i << " j=" << j << " pi=" << pi << " *pi=" << *pi << '\n';
return 0;
}
1. const int& j=i++; похоже по стандарту (у Алены-срр видел похожее)
2. const int* pi=&j; мне кажется разумно
3. const int* pi=&(i++); — а вот это непонятно, почему компилятор отвергает