программистское, для знающих C++
Nov. 4th, 2012 03:39 pmC++ Rvalue References Explained
Отличная статья об одном из новшеств стандарта C++11 - так называемых "rvalue references". Оказывается, это совсем не страшная штука, и в этой статье всего из 11 страниц автор подробно объясняет, зачем они нужны, как их использовать, и почему, если вы собираетесь использовать rvalue references вместе с exceptions в одном и том же коде, лучше сразу застрелиться.
Процитирую прекрасную таблицу ссылок на ссылки:
Отличная статья об одном из новшеств стандарта C++11 - так называемых "rvalue references". Оказывается, это совсем не страшная штука, и в этой статье всего из 11 страниц автор подробно объясняет, зачем они нужны, как их использовать, и почему, если вы собираетесь использовать rvalue references вместе с exceptions в одном и том же коде, лучше сразу застрелиться.
Процитирую прекрасную таблицу ссылок на ссылки:
- A& & becomes A&
- A& && becomes A&
- A&& & becomes A&
- A&& && becomes A&&
no subject
Date: 2012-11-04 04:34 pm (UTC)no subject
Date: 2012-11-04 07:32 pm (UTC)no subject
Date: 2012-11-04 10:45 pm (UTC)int i = 5 ;
char a[i] ;/*illegal, i - lvalue*/
char b[i+1]; /* illegal i+1 - rvalue */
no subject
Date: 2012-11-05 08:34 am (UTC)В первом случае у нас отсечение идёт по l-value, во втором - "неконстантное r-value", результат вычисления выражения, неопределённого на этапе компиляции.
Собственно константное выражение - суть non-modifiable lvalue (http://www.rsdn.ru/article/cpp/lvalue.xml).
Хотя, гарантий, что компилер не заоптимизирует константную переменную - нет.