В этой статье на примере реализации механизма обратного вызова будет рассмотрена возможности применения лямбда функций в удобной и быстрой форме.
Читать полностью »
Метка «c++0x»
Лямбда-функции и реализация удобного механизма Callback-ов на C++
2013-09-04 в 9:11, admin, рубрики: c++, c++0x, c++11, callback, callbacks, С++, метки: c++0x, c++11, callback, callbacks, С++Move semantics в C++11 и STL-контейнеры
2013-03-23 в 18:31, admin, рубрики: c++, c++0x, c++11, move semantics, STL containers, метки: c++0x, c++11, move semantics, STL containers Эта небольшая заметка о том, как с приходом нового стандарта C++11 изменились требования стандартных контейнеров к своим элементам. В C++98 от элемента контейнера требовалось, по сути, наличие «разумных» конструктора копирования и оператора присваивания. Если, например, объект вашего класса владеет каким-либо ресурсом, копирование обычно становится невозможным (по крайней мере, без «глубокого» копирования ресурса). В качестве примера давайте рассмотрим следующий класс-обертку вокруг FILE*
, написанную на C++98:
class File
{
FILE* handle;
public:
File(const char* filename) {
if ( !(handle = fopen(filename, "r")) )
throw std::runtime_error("blah blah blah");
}
~File() { if (handle) fclose(handle); }
// ...
private:
File(const File&); //запретить копирование
void operator=(const File&); //запретить присваивание
};
Observer Pattern со строгой типизацией или зачем нам нужен Objective-C++
2012-12-11 в 18:49, admin, рубрики: c++0x, objective-c, Observer, метки: c++0x, objective-c, Observer
Уже много копий было сломанно о тему «обработка событий в Objective-C», о делегировании событий (к примеру, viewWillAppear:(BOOL)animated ), о том как это не удобно, когда надо слушать их одновременно в разных местах программы.
Я хочу предложить Вам свою реализацию шаблона Observer, который использует мощь C++0x и позволяет объявлять сигналы с жёстко типизированным списком параметров, например, вот так:
new TLSignal<NSString *, BOOL>(self);
Т.к. мои знания С++ довольно таки скудны, то буду признателен любым советам по улучшению данного кода.
Заинтересовавшихся прошу под кат.
Читать полностью »
Замечание по rvalue references при операторе return в C++11
2012-03-26 в 8:32, admin, рубрики: c++, c++0x, c++11, метки: c++0x, c++11 Бегло просматривая новый стандарт C++11, решил углубить свое понимание в теме rvalue references. Все, в принципе, замечательно, но есть подводные камни, а именно: некоторая потеря обратной совместимости с С++03.
Читать полностью »
Замечание по move semantics при операторе return в C++11
2012-03-26 в 8:32, admin, рубрики: c++, c++0x, c++11, метки: c++0x, c++11 Бегло просматривая новый стандарт C++11, решил углубить свое понимание в теме rvalue references. Все, в принципе, замечательно, но есть подводные камни, а именно: некоторая потеря обратной совместимости с С++03.
Читать полностью »
C++ / Производительность shared_ptr и C++11: почему я не верю библиотекам
2012-02-21 в 15:26, admin, рубрики: atomic, boost, c++, c++0x, c++11, move, shared_ptr, метки: atomic, boost, c++, c++0x, c++11, move, shared_ptrЗдравствуйте!
Оптимизировал я однажды критический участок кода, и был там boost::shared_ptr… И понял я: не верю я библиотекам, хоть и пишут их дядьки умные.
Так вот, оптимизировал я код, и был там такой участок:
auto pRes = boost::static_pointer_cast< TBase >( boost::allocate_shared< TDerived >( TAllocator() ) );
<fontЧитать полностью »