SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Хитрости RAII
Максим Лысков
Минск, 2015
Хитрости RAII
Знакомимся?
Максим, старший инженер-разработчик в компании EPAM Systems.
В настоящее время участвую в разработке системы иерархического
хранения и репликации данных.
Хитрости RAII
Оно течет!
Хитрости RAII
int importantFunc(int someParam)
{
char * buf = new char[BUFSIZE];
if (conditionFunc1(someParam)) {
lessImportantFunc1(buf); // (0)
delete buf;
return 1;
}
else if (conditionFunc2(someParam)) {
lessImportantFunc1(buf);
return 2; // (1)
}
delete [] buf;
return 0;
}
Хитрости RAII
Ресурсы
Хитрости RAII
Память
new/delete
malloc/free
Хитрости RAII
Мьютексы
lock/unlock
Хитрости RAII
Файлы
open/close
Хитрости RAII
Что угодно
acquire/release
Хитрости RAII
Гарантии безопасности исключений по
Абрахамсу
1. No throw / no except.
2. Basic - нету утечек, состояние объектов - консистентно.
3. Strong - транзакционная модель, состояние объекта не изменилось
Хитрости RAII
Resource acquisition is initialization
class RAIIObject
{
public:
RAIIObject() : m_handle(openHandle()) {
if (!handleValid(m_handle)) {
throw std::logic_error(“Invalid handle”);
}
}
~RAIIObject() {
if (handleValid(m_handle)) {
closeHandle(m_handle);
}
}
operator handle() { return m_handle; }
private:
handle m_handle;
};
int handleHandle(handle h);
int bar()
{
RAIIObject safeHandle;
handleHandle(safeHandle);
}
Хитрости RAII
Работает из коробки
smart pointers - unique_ptr, shared_ptr, weak_ptr, auto_ptr
STL containers - vector, string
STL streams - ?fstream
thread
thread locks - lock_guard,unique_lock, shared_lock
Хитрости RAII
Работает из коробки - 2
vector в качестве in/out buffer
int importantFunc(int someParam)
{
vector<char> buf(BUFSIZE, 0);
if (conditionFunc1(someParam)) {
lessImportantFunc1(buf.data());
return 1;
}
else if (conditionFunc2(someParam)) {
lessImportantFunc1(buf.data());
return 2;
}
return 0;
}
Хитрости RAII
Работает из коробки - 3
unique_ptr в качестве in/out buffer
int importantFunc(int someParam)
{
unique_ptr<char[]> buf(new char[BUFSIZE]);
if (conditionFunc1(someParam)) {
lessImportantFunc1(buf.get());
return 1;
}
else if (conditionFunc2(someParam)) {
lessImportantFunc1(buf.get());
return 2;
}
return 0;
}
Хитрости RAII
Работает из коробки - 4
unique_ptr / shared_ptr с пользовательским удалением (*)
(*) ограничение - ресурс должен быть подобен указателю
handle* openHandle1();
int openHandle2(handle** pph);
void closeHandle(handle* h);
void fooBar()
{
shared_ptr<handle> handle_shared(openHandle1(), &closeHandle);
handle* h = nullptr;
openHandle(&h);
unique_ptr<handle, void(*)(handle*)> handle_unique(h, &closeHandle);
doSomethingWithHandles(handle_shared.get(), handle_unique.get());
}
Хитрости RAII
Еще одна дыра
int foo(int i1, char* p, int i2) {
…
delete p;
}
void bar() {
...
result = foo(calculateI1(), new char[SIZE], calculateI2());
...
}
Хитрости RAII
make_shared
make_unique
Хитрости RAII
RAII своими руками
class RAIIObject
{
public:
RAIIObject() : m_handle(openHandle()) {
if (!handleValid(m_handle)) {
throw std::logic_error(“Invalid handle”);
}
}
~RAIIObject() {
if (handleValid(m_handle)) {
closeHandle(m_handle);
}
}
operator handle() { return m_handle; }
private:
handle m_handle;
};
Хитрости RAII
Разработка безопасных классов
все члены - RAII
инициализация - в списке инициализации, если нужно - отдельная функция
Хитрости RAII
Советы
Все в RAII
Избегайте работы с “голыми” ресурсами
Используйте стандартные механизмы языка и его стандартную
библиотеку
…
PROFIT!
Хитрости RAII
?
Хитрости RAII
Спасибо!

Weitere ähnliche Inhalte

Was ist angesagt?

Почему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияПочему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияMichael Pankov
 
Модель памяти C++ - Андрей Янковский, Яндекс
Модель памяти C++ - Андрей Янковский, ЯндексМодель памяти C++ - Андрей Янковский, Яндекс
Модель памяти C++ - Андрей Янковский, ЯндексYandex
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
Бессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровБессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровPositive Hack Days
 
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...Alexey Paznikov
 
ES6. Генераторы
ES6. ГенераторыES6. Генераторы
ES6. Генераторыoelifantiev
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolAlexandre Kalendarev
 
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008Ontico
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Yauheni Akhotnikau
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
028
028028
028JIuc
 
Redis. Как мы боролись со сложностью
Redis. Как мы боролись со сложностьюRedis. Как мы боролись со сложностью
Redis. Как мы боролись со сложностьюPython Meetup
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
 
практика 7
практика 7практика 7
практика 7student_kai
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 

Was ist angesagt? (20)

Почему Rust стоит вашего внимания
Почему Rust стоит вашего вниманияПочему Rust стоит вашего внимания
Почему Rust стоит вашего внимания
 
Модель памяти C++ - Андрей Янковский, Яндекс
Модель памяти C++ - Андрей Янковский, ЯндексМодель памяти C++ - Андрей Янковский, Яндекс
Модель памяти C++ - Андрей Янковский, Яндекс
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
Бессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровБессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоров
 
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
 
ES6. Генераторы
ES6. ГенераторыES6. Генераторы
ES6. Генераторы
 
Паттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере TarantoolПаттерны и примеры структур данных в NoSQL на примере Tarantool
Паттерны и примеры структур данных в NoSQL на примере Tarantool
 
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?
 
Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление. Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление.
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Devel::PPAP
Devel::PPAPDevel::PPAP
Devel::PPAP
 
028
028028
028
 
Redis. Как мы боролись со сложностью
Redis. Как мы боролись со сложностьюRedis. Как мы боролись со сложностью
Redis. Как мы боролись со сложностью
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
практика 7
практика 7практика 7
практика 7
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 

Andere mochten auch

Приключения в осеннем лесу
Приключения в осеннем лесуПриключения в осеннем лесу
Приключения в осеннем лесуtatyankatkach
 
Андрій Селезньов “Завітайте до нашого села або AgTech в Україні”
Андрій Селезньов “Завітайте до нашого села або AgTech в Україні”Андрій Селезньов “Завітайте до нашого села або AgTech в Україні”
Андрій Селезньов “Завітайте до нашого села або AgTech в Україні”Lviv Startup Club
 
Дмитро Лідер “Вирощування багаторічного стартапу: досвід садівника”
Дмитро Лідер “Вирощування багаторічного стартапу: досвід садівника”Дмитро Лідер “Вирощування багаторічного стартапу: досвід садівника”
Дмитро Лідер “Вирощування багаторічного стартапу: досвід садівника”Lviv Startup Club
 
Jornal lapis final ano letivo 12 13 3ºtrimestre
Jornal lapis final ano letivo 12 13  3ºtrimestreJornal lapis final ano letivo 12 13  3ºtrimestre
Jornal lapis final ano letivo 12 13 3ºtrimestrebibliotecaoureana
 
Lviv iCamp 2016 Дмитро Луцишин "20 лайфхаків для збільшення продажів у Вашому...
Lviv iCamp 2016 Дмитро Луцишин "20 лайфхаків для збільшення продажів у Вашому...Lviv iCamp 2016 Дмитро Луцишин "20 лайфхаків для збільшення продажів у Вашому...
Lviv iCamp 2016 Дмитро Луцишин "20 лайфхаків для збільшення продажів у Вашому...Lviv Startup Club
 
как получать #кайфотработы александр дудоров
как получать #кайфотработы александр дудоровкак получать #кайфотработы александр дудоров
как получать #кайфотработы александр дудоровKostukova Katerina
 
Олег Афанасьев. Тренинг. Введение в должность. 27-28.04.2016
Олег Афанасьев. Тренинг. Введение в должность. 27-28.04.2016Олег Афанасьев. Тренинг. Введение в должность. 27-28.04.2016
Олег Афанасьев. Тренинг. Введение в должность. 27-28.04.2016Oleg Afanasyev
 
коучинговые инструменты как способ вдохновить персонал на подвиги диана кровлина
коучинговые инструменты как способ вдохновить персонал на подвиги диана кровлинакоучинговые инструменты как способ вдохновить персонал на подвиги диана кровлина
коучинговые инструменты как способ вдохновить персонал на подвиги диана кровлинаKostukova Katerina
 
ANÁLISIS TÉCNICO
ANÁLISIS TÉCNICOANÁLISIS TÉCNICO
ANÁLISIS TÉCNICOIbertraders
 
Клиентоориентированные продажи для предпринимателей социальной сферы
Клиентоориентированные продажи для предпринимателей социальной сферыКлиентоориентированные продажи для предпринимателей социальной сферы
Клиентоориентированные продажи для предпринимателей социальной сферыДмитрий Устьянцев
 
Expanding Asterisk with Kamailio
Expanding Asterisk with KamailioExpanding Asterisk with Kamailio
Expanding Asterisk with KamailioFred Posner
 
Region filling and object removal by exemplar based image inpainting
Region filling and object removal by exemplar based image inpaintingRegion filling and object removal by exemplar based image inpainting
Region filling and object removal by exemplar based image inpaintingWoonghee Lee
 
ELEGIR UN GRUPO DE TRADING
ELEGIR UN GRUPO DE TRADINGELEGIR UN GRUPO DE TRADING
ELEGIR UN GRUPO DE TRADINGIbertraders
 
Lviv PMDay: Савельєв Максим & Сергій Кравченко Побудова та еволюція відділу п...
Lviv PMDay: Савельєв Максим & Сергій Кравченко Побудова та еволюція відділу п...Lviv PMDay: Савельєв Максим & Сергій Кравченко Побудова та еволюція відділу п...
Lviv PMDay: Савельєв Максим & Сергій Кравченко Побудова та еволюція відділу п...Lviv Startup Club
 
Lviv PMDay: Андрій Павлюков Management 3.0. Delegation and Empowerment
Lviv PMDay: Андрій Павлюков Management 3.0. Delegation and EmpowermentLviv PMDay: Андрій Павлюков Management 3.0. Delegation and Empowerment
Lviv PMDay: Андрій Павлюков Management 3.0. Delegation and EmpowermentLviv Startup Club
 
Voxter - Building Value with Kazoo - KazooCon 2015
Voxter - Building Value with Kazoo - KazooCon 2015Voxter - Building Value with Kazoo - KazooCon 2015
Voxter - Building Value with Kazoo - KazooCon 20152600Hz
 
VirtualPBX - Back Office, Delivering Voice in a Competitive Market - KazooCon...
VirtualPBX - Back Office, Delivering Voice in a Competitive Market - KazooCon...VirtualPBX - Back Office, Delivering Voice in a Competitive Market - KazooCon...
VirtualPBX - Back Office, Delivering Voice in a Competitive Market - KazooCon...2600Hz
 
Трифонова Мария
Трифонова МарияТрифонова Мария
Трифонова МарияElenaSam
 

Andere mochten auch (18)

Приключения в осеннем лесу
Приключения в осеннем лесуПриключения в осеннем лесу
Приключения в осеннем лесу
 
Андрій Селезньов “Завітайте до нашого села або AgTech в Україні”
Андрій Селезньов “Завітайте до нашого села або AgTech в Україні”Андрій Селезньов “Завітайте до нашого села або AgTech в Україні”
Андрій Селезньов “Завітайте до нашого села або AgTech в Україні”
 
Дмитро Лідер “Вирощування багаторічного стартапу: досвід садівника”
Дмитро Лідер “Вирощування багаторічного стартапу: досвід садівника”Дмитро Лідер “Вирощування багаторічного стартапу: досвід садівника”
Дмитро Лідер “Вирощування багаторічного стартапу: досвід садівника”
 
Jornal lapis final ano letivo 12 13 3ºtrimestre
Jornal lapis final ano letivo 12 13  3ºtrimestreJornal lapis final ano letivo 12 13  3ºtrimestre
Jornal lapis final ano letivo 12 13 3ºtrimestre
 
Lviv iCamp 2016 Дмитро Луцишин "20 лайфхаків для збільшення продажів у Вашому...
Lviv iCamp 2016 Дмитро Луцишин "20 лайфхаків для збільшення продажів у Вашому...Lviv iCamp 2016 Дмитро Луцишин "20 лайфхаків для збільшення продажів у Вашому...
Lviv iCamp 2016 Дмитро Луцишин "20 лайфхаків для збільшення продажів у Вашому...
 
как получать #кайфотработы александр дудоров
как получать #кайфотработы александр дудоровкак получать #кайфотработы александр дудоров
как получать #кайфотработы александр дудоров
 
Олег Афанасьев. Тренинг. Введение в должность. 27-28.04.2016
Олег Афанасьев. Тренинг. Введение в должность. 27-28.04.2016Олег Афанасьев. Тренинг. Введение в должность. 27-28.04.2016
Олег Афанасьев. Тренинг. Введение в должность. 27-28.04.2016
 
коучинговые инструменты как способ вдохновить персонал на подвиги диана кровлина
коучинговые инструменты как способ вдохновить персонал на подвиги диана кровлинакоучинговые инструменты как способ вдохновить персонал на подвиги диана кровлина
коучинговые инструменты как способ вдохновить персонал на подвиги диана кровлина
 
ANÁLISIS TÉCNICO
ANÁLISIS TÉCNICOANÁLISIS TÉCNICO
ANÁLISIS TÉCNICO
 
Клиентоориентированные продажи для предпринимателей социальной сферы
Клиентоориентированные продажи для предпринимателей социальной сферыКлиентоориентированные продажи для предпринимателей социальной сферы
Клиентоориентированные продажи для предпринимателей социальной сферы
 
Expanding Asterisk with Kamailio
Expanding Asterisk with KamailioExpanding Asterisk with Kamailio
Expanding Asterisk with Kamailio
 
Region filling and object removal by exemplar based image inpainting
Region filling and object removal by exemplar based image inpaintingRegion filling and object removal by exemplar based image inpainting
Region filling and object removal by exemplar based image inpainting
 
ELEGIR UN GRUPO DE TRADING
ELEGIR UN GRUPO DE TRADINGELEGIR UN GRUPO DE TRADING
ELEGIR UN GRUPO DE TRADING
 
Lviv PMDay: Савельєв Максим & Сергій Кравченко Побудова та еволюція відділу п...
Lviv PMDay: Савельєв Максим & Сергій Кравченко Побудова та еволюція відділу п...Lviv PMDay: Савельєв Максим & Сергій Кравченко Побудова та еволюція відділу п...
Lviv PMDay: Савельєв Максим & Сергій Кравченко Побудова та еволюція відділу п...
 
Lviv PMDay: Андрій Павлюков Management 3.0. Delegation and Empowerment
Lviv PMDay: Андрій Павлюков Management 3.0. Delegation and EmpowermentLviv PMDay: Андрій Павлюков Management 3.0. Delegation and Empowerment
Lviv PMDay: Андрій Павлюков Management 3.0. Delegation and Empowerment
 
Voxter - Building Value with Kazoo - KazooCon 2015
Voxter - Building Value with Kazoo - KazooCon 2015Voxter - Building Value with Kazoo - KazooCon 2015
Voxter - Building Value with Kazoo - KazooCon 2015
 
VirtualPBX - Back Office, Delivering Voice in a Competitive Market - KazooCon...
VirtualPBX - Back Office, Delivering Voice in a Competitive Market - KazooCon...VirtualPBX - Back Office, Delivering Voice in a Competitive Market - KazooCon...
VirtualPBX - Back Office, Delivering Voice in a Competitive Market - KazooCon...
 
Трифонова Мария
Трифонова МарияТрифонова Мария
Трифонова Мария
 

Mehr von corehard_by

C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
 
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...corehard_by
 
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений ОхотниковC++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотниковcorehard_by
 
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр ТитовC++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титовcorehard_by
 
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...corehard_by
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишковcorehard_by
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...corehard_by
 
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...corehard_by
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...corehard_by
 
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...corehard_by
 
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...corehard_by
 
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...corehard_by
 
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел ФилоновC++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филоновcorehard_by
 
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan ČukićC++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukićcorehard_by
 
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia KazakovaC++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakovacorehard_by
 
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон ПолухинC++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухинcorehard_by
 
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...corehard_by
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019corehard_by
 
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019corehard_by
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019corehard_by
 

Mehr von corehard_by (20)

C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
 
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
 
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений ОхотниковC++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
 
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр ТитовC++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
 
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
 
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
 
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
 
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
 
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
 
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел ФилоновC++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
 
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan ČukićC++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
 
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia KazakovaC++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
 
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон ПолухинC++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
 
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
 
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
 

Хитрости RAII