URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 36028
[ Назад ]

Исходное сообщение
"OpenNews: Что нового ожидается в стандарте C++ 09"

Отправлено opennews , 21-Ноя-06 11:33 
В документе "C++09: A Glimpse into the Future (http://www.devsource.com/article2/0,1895,2061094,00.asp)" рассказывается о новшествах, представленных в проекте стандарта C++ 09, принятие которого ожидается в 2009  году.


URL: http://www.devsource.com/article2/0,1895,2061094,00.asp
Новость: http://www.opennet.me/opennews/art.shtml?num=8929


Содержание

Сообщения в этом обсуждении
"Что нового ожидается в стандарте C++ 09"
Отправлено Azzzazelo , 21-Ноя-06 11:33 
Так и не понял смысл rvalue reference. На первый взгляд просто лишняя фича.

"Что нового ожидается в стандарте C++ 09"
Отправлено Aleksey , 21-Ноя-06 11:39 
сообщение
invalid initialization of non-const reference of type 'int&' from a temporary of type 'int'
in passing argument 1 of `void foo(int&)'

на код
void foo (int& oof) { }
int main (int argn, char** argv) { foo (0); }

что нибудь говорит ?


"Что нового ожидается в стандарте C++ 09"
Отправлено kpot , 21-Ноя-06 12:31 
Конечно говорит. Ты передаёшь в foo ноль, константой. А судя по сигнатуре foo, ты должен передать именно переменную. Например:

void foo(int& oof) {}
int main(...) { int v = 0; foo(v); }


"Что нового ожидается в стандарте C++ 09"
Отправлено Andrey Mitrofanov , 21-Ноя-06 12:55 
> А судя по сигнатуре
О!
> foo, ты должен передать именно переменную.
Так вот, 0 - это lvalue, а v - rvalue.
Кто бы мог подумать?! :)) См., например, http://en.wikibooks.org/wiki/C++_Programming/Operators

"Что нового ожидается в стандарте C++ 09"
Отправлено Kemm , 21-Ноя-06 15:45 
Польза-то какая от этого? Если я написал int &, значит надо так. Я и поизменять могу захотеть внутри функции, к примеру. Что будет?

"Что нового ожидается в стандарте C++ 09"
Отправлено trantor , 27-Ноя-06 18:53 
segmentation fault например как я понимаю. Передача ссылки на константу, которая может не находиться в writable памяти.

"Что нового ожидается в стандарте C++ 09"
Отправлено AMDmi3 , 21-Ноя-06 20:58 
> Так вот, 0 - это lvalue, а v - rvalue.
Наоборот.

"Что нового ожидается в стандарте C++ 09"
Отправлено JetSnaiL , 22-Ноя-06 14:59 
Здорово! Хорошие изменения. Еще бы разрешить template method specialization внутри классов и template friends, было бы совсем хорошо!

"Что нового ожидается в стандарте C++ 09"
Отправлено Nem , 23-Ноя-06 11:39 
>Здорово! Хорошие изменения. Еще бы разрешить template method specialization внутри классов и
>template friends, было бы совсем хорошо!

Точно. Этого сильно не хватает. Чтобы сделать частичную специализацию только одного метода класса, приходится частично специализировать весь класс. Т.е. полностью копировать все его описание, что приводит к полной ж.пе при сопровождении.


"Что нового ожидается в стандарте C++ 09"
Отправлено kyrie , 23-Ноя-06 22:12 
>>Здорово! Хорошие изменения. Еще бы разрешить template method specialization внутри классов и
>>template friends, было бы совсем хорошо!
>
>Точно. Этого сильно не хватает. Чтобы сделать частичную специализацию только одного метода
>класса, приходится частично специализировать весь класс. Т.е. полностью копировать все его
>описание, что приводит к полной ж.пе при сопровождении.

Именно! А если еще разрешить локальным классам выступать хотя бы как параметры шаблонов не локальных классов... Т.е. например:
template <class T> void myMethod()
{
struct MyStruct : public T{};
std::vector<MyStruct> vec;
...
}