crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Ликбез по С++11, заметки про новый стандарт
Iron Bug
  опции профиля:
сообщение 18.11.2011, 16:01
Сообщение #1


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Вот, положу-ка я сюда полезные линки по фичам нового стандарта С++, для просвещения молодёжи :)
Я последние дни сидела и ковыряла новые возможности C++. Честно говоря, даже для меня некоторые вещи оказались неожиданными и очень полезными.

А вы умеете передавать параметры функций без операций копирования памяти? Теперь с С++ это возможно!
C++ Rvalue References Explained
Эту статью вообще полезно прочитать всем, кто пишет на C++.
У этого автора есть другие статьи и ссылки на полезные материалы:
http://thbecker.net/start_page_showing_articles.html

Также там я нашла ссылку на весьма любопытный сайт, посвящённый вопросам современного С++:
http://cpp-next.com
Там есть интересные вещи про оптимизацию. Например: http://cpp-next.com/archive/2009/08/want-s...-pass-by-value/

Для любителей головоломок с шаблонами:
Variadic templates (шаблоны с переменным числом аргументов):
http://www.open-std.org/jtc1/sc22/wg21/doc.../2006/n2080.pdf (документ pdf)
Пока поддерживается GCC и MinGW. Часть примеров реально используется в бусте, в библиотеке interprocess.

Вот пока самое ценное, что я накопала по новому стандарту. Появится ещё полезный материал - буду сюда ссылки кидать.

Сообщение отредактировал Iron Bug - 18.11.2011, 16:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 19.11.2011, 17:41
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Ну тогда сюда просто необходимо так же добавить описание работы с таким нововведением как Lambda Functions in C++11 - the Definitive Guide

А так же: C++11 range-based for loops, пример:
std::vector<int> vec;
for (int i : vec )
{
   cout << i;
}
std::map<std::string, std::string> address_book;
for ( auto address_entry : address_book )
{
   cout  << address_entry.first << " < " << address_entry.second << ">" << endl;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 19.11.2011, 23:43
Сообщение #3


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


ну, это простые и понятные мелочи. по ним есть исчерпывающие примеры на обычных сайтах. я искала подробные статьи по сложным нововведениям.

лямбда функции в бусте сто лет назад появились, я даже и не обратила на них внимания :) они иногда весьма удобны, но реально они мне как-то не пригождались в работе. на самом деле, лямбда-функции - это просто автогенерация некоторых темплейтов, а не принципиально новая фича компилятора. чисто для краткости написания. раньше то же самое делалось через темплейты.
да и range-based loops, по сути - чисто синтаксис. код там тот же самый, что и раньше, при объявлении через итератор. просто пишется кратко.
но может, и это кому-то пригодится.

а вот rvalue reference - это уже совершенно новый метод работы с памятью. так же как и variadic templates. у них нет аналогов или замен в предыдущих стандартах. особенно последнюю фичу я долго ждала. и дико обломалась, когда узнала, что мелкософт на неё просто забил в VC++ 11. теперь под вендой пока юзаю MinGW, хотя отладка там неудобная.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 22.10.2013, 23:13
Сообщение #4


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


В новой студии Microsoft Visual Studio 2013 появилась поддержка Variadic templates (стандарт С++11).
У них это не поддерживалось, когда-то давно я им об этом писала - вот, сообщили, что сделали, наконец-то. Я даже удивилась :)
Цитата
Variadic templates are supported in Visual Studio 2013. See http://msdn.microsoft.com/en-us/library/vstudio/hh409293 for the full list.

Ну и какбэ новая студия выпущена, 2013-я. Пройдя по ссылке выше, можно про неё прочитать. Там ещё дополнения по стандарту есть.

Кстати, там можно скачать студию 2013: http://www.microsoft.com/visualstudio/eng/downloads
Триальные версии - 30 дней, плюс Express, как всегда. Ещё появилась какая-то шняга для тестирования и ведения проектов (как я поняла) - Visual Studio Test.
Для скачивания нужна только регистрация на их сайте (это бесплатно и делается моментально).
Скачаем - посмотрим.

Сообщение отредактировал Iron Bug - 23.10.2013, 7:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 3.12.2013, 13:23
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Пока никак не сталкивалась с новым стандартом на практике , зато литературе несколько раз встречала с таким описанием класса
class Foo
{
public:
    Foo() = default;
    Foo(const Foo&) = delete;
};

Правильно ли понимаю, что без Foo(const Foo&) = delete; по новому стандарту, встретив что-то вроде
Foo one;
Foo other(one);

компилятор сам сгенерит конструктор для копии, а с Foo(const Foo&) = delete; такая самодеятельность приведёт к ошибке?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 3.12.2013, 13:50
Сообщение #6


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


обычно компилятор сам генерит конструкторы по умолчанию. default лишь ещё раз явно это указывает.
а delete запрещает эту автогенерацию.

P.S. компилятор от мелкософта просто игнорирует данные настройки. он хоть и не ругается, но и ничего не делает.

Сообщение отредактировал Iron Bug - 3.12.2013, 13:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.12.2013, 12:30
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


чёт я относительно delete не понял. Само слово никакого запрета не подразумевает, а подразумевает удаление чего-либо.

Да и чтобы запретить внешний вызов конструктора копирования его достаточно в раздел private поместить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 4.12.2013, 13:14
Сообщение #8


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(Litkevich Yuriy @ 4.12.2013, 15:30) *
чёт я относительно delete не понял. Само слово никакого запрета не подразумевает, а подразумевает удаление чего-либо.

тут не надо ничего понимать. надо читать спецификацию на С++11.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 4:01