The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Что нового ожидается в стандарте C++ 09

20.11.2006 18:08

В документе "C++09: A Glimpse into the Future" рассказывается о новшествах, представленных в проекте стандарта C++ 09, принятие которого ожидается в 2009 году.

  1. Главная ссылка к новости (http://www.devsource.com/artic...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/8929-gcc
Ключевые слова: gcc, cpp
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (10) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Azzzazelo (?), 11:33, 21/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так и не понял смысл rvalue reference. На первый взгляд просто лишняя фича.
     
     
  • 2.2, Aleksey (??), 11:39, 21/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    сообщение
    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); }

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

     
     
  • 3.3, kpot (?), 12:31, 21/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно говорит. Ты передаёшь в foo ноль, константой. А судя по сигнатуре foo, ты должен передать именно переменную. Например:

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

     
     
  • 4.5, Andrey Mitrofanov (?), 12:55, 21/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    > А судя по сигнатуре
    О!
    > foo, ты должен передать именно переменную.
    Так вот, 0 - это lvalue, а v - rvalue.
    Кто бы мог подумать?! :)) См., например, http://en.wikibooks.org/wiki/C++_Programming/Operators
     
     
  • 5.6, Kemm (?), 15:45, 21/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Польза-то какая от этого? Если я написал int &, значит надо так. Я и поизменять могу захотеть внутри функции, к примеру. Что будет?
     
     
  • 6.11, trantor (??), 18:53, 27/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    segmentation fault например как я понимаю. Передача ссылки на константу, которая может не находиться в writable памяти.
     
  • 5.7, AMDmi3 (?), 20:58, 21/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    > Так вот, 0 - это lvalue, а v - rvalue.
    Наоборот.
     

  • 1.8, JetSnaiL (ok), 14:59, 22/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Здорово! Хорошие изменения. Еще бы разрешить template method specialization внутри классов и template friends, было бы совсем хорошо!
     
     
  • 2.9, Nem (?), 11:39, 23/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >Здорово! Хорошие изменения. Еще бы разрешить template method specialization внутри классов и
    >template friends, было бы совсем хорошо!

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

     
     
  • 3.10, kyrie (?), 22:12, 23/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >>Здорово! Хорошие изменения. Еще бы разрешить template method specialization внутри классов и
    >>template friends, было бы совсем хорошо!
    >
    >Точно. Этого сильно не хватает. Чтобы сделать частичную специализацию только одного метода
    >класса, приходится частично специализировать весь класс. Т.е. полностью копировать все его
    >описание, что приводит к полной ж.пе при сопровождении.

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

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру