Продолжу рассказы о том, как программисты ходят по краю, даже не подозревая об этом. Поговорим об операциях сдвига <<, >>. Принципы работы операторов сдвига очевидны и многие программисты даже не знают, что их использование согласно стандарту Си/Си++ может приводить к неопределенному или к неуточненному поведению (undefined behaviour/unspecified behavior).
Читать полностью »
Рубрика «c++11» - 17
Не зная брода, не лезь в воду. Часть третья
2012-04-11 в 11:34, admin, рубрики: c plus plus, c++, c++11, pvs-studio, битовые операции, Компиляторы, метки: c plus plus, c++, c++11, pvs-studio, битовые операцииЗамечание по 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.
Читать полностью »
Релиз GCC-4.7
2012-03-23 в 7:47, admin, рубрики: c++, c++11, gcc, open source, Компиляторы, метки: c++11, gcc, open sourceСегодня ночью вышел долгожданный GCC 4.7, выпуск которого приурочен к 25-летию проекта.
Долгожданным этот выпуск является прежде всего для программистов C++, так как несет с собой обширную поддержку нового стандарта С++11.
Читать полностью »
Пользовательские литералы в C++11
2012-03-20 в 14:34, admin, рубрики: c++, c++11, user-defined literals, Программирование, метки: c++, c++11, user-defined literalsБолее полугода прошло с момента принятия стандарта C++11. В сети можно найти много материалов посвященных новому стандарту, однако большинство из них касаются самых простых возможностей, самых сладких. Я говорю о лямбда-функциях, системе автоматического выведения типов, новых спецификаторах, умных указателях и т.д. Да, это действительно интересные вещи и, можно смело сказать, они одни из самых полезных и часто используемых. Но на них свет клином не сошелся, и новенький C++11 предлагает нам не только их.
Ниже я хочу рассказать о пользовательских литералах — весьма полезном средстве, хоть и не в повседневных целях.
Читать полностью »
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Читать полностью »
Блог компании Инфопульс Украина / Here be dragons
2012-02-21 в 8:08, admin, рубрики: c++, c++11, dragons Просматривая материалы конференции GoingNative 2012 (которую всем программистам на С++ очень советую посмотреть), я обратил внимание на один пример кода:
#include <iostream> struct S { int n; }; struct X { X(int) {} }; void f(void*) { std::cerr << "Pointer!n"; } void f(X) { std::cerr << "X! n"; } int main() { f(S().n); }
Сможете ли вы, не подглядывая в ответ, сказать, что напечатает эта программа и самое главное, почему?
Под катом — предположение разработчика Clang из Google о том, почему этот код работает так, как он работает. Еще раз,Читать полностью »