2014-03-07_c++11 / c++11
.pdf//static_assert
//проверяет утверждение во время компиляции.
//Если утверждение — истина,
//то ничего не происходит.
//Иначе, компилятор выводит
//указанное сообщение об ошибке.
template <typename T, size_t Size> class Vector
{
static_assert(Size > 3, "Size is too small"); T _points[Size];
};
11
// type &&
template<class T> class vector {
//Конструктор копирования (медленный) vector(const vector &);
//Конструктор переноса из временного объекта (быстрый) vector(vector &&);
//Обычное присваивание (медленное)
vector & operator = (const vector &); // Перенос временного объекта (быстрый) vector & operator = (vector &&);
};
12
//constexpr
//Было:
int GiveFive() { return 5; }
int array[GiveFive() + 7]; // не ok
// Стало:
constexpr int GiveFour() { return 4; }
int array11[GiveFour() + 7]; // ok (gcc, clang)
13
//поддержка
//компиляторами
http://www.geeks3d.com/20130314/c11-compiler- support-vs2012-vs-gcc-vs-clang/
http://wiki.apache.org/stdcxx/C%2B%2B0xCompil erSupport
14
// ссылки
/*
Десять возможностей C++11, которые должен использовать каждый C++ разработчик
http://habrahabr.ru/post/182920/
https://en.wikipedia.org/wiki/C++11
https://ru.wikipedia.org/wiki/C++11
http://en.cppreference.com/w/cpp/memory
*/
15
// ещё ссылки
/*
Что нового в работе с исключениями в C++11 http://habrahabr.ru/post/160955/
Пользовательские литералы в C++11 http://habrahabr.ru/post/140357/ */
16