CMake — это система сборки для C/C++, которая с каждым годом становится всё популярнее. Он практически стал решением по умолчанию для новых проектов. Однако, множество примеров выполнения какой-либо задачи на CMake содержат архаичные, ненадёжные, раздутые действия. Мы выясним, как писать скрипты сборки на CMake лаконичнее.
Рубрика «c++17» - 7
Современный CMake: 10 советов по улучшению скриптов сборки
2017-06-14 в 13:57, admin, рубрики: c++, c++17, cmakeРелиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое
2017-03-31 в 15:48, admin, рубрики: C, c++, C++14, c++17, Catch, CLion, disassembly view, IDE, jetbrains, MSVC, Блог компании JetBrains, ПрограммированиеПривет! Спешим поделиться радостной новостью – мы выпустили первый в этом году релиз нашей кросс-платформенной IDE для C и C++, CLion 2017.1!

Наши планы, как обычно, немного превосходят наши возможности и ресурсы. Но в этот релиз нам удалось успеть почти все из запланированного. Если вкратце:
- Поддержка C++14 (всё кроме constexpr)
- Начальная поддержка C++17 (мы начали с самой востребованной возможности – nested namespaces)
- Возможность конвертировать тип переменной в auto
- Во время отладки программы, при отсутствии файлов с исходным кодом можно переходить на код на дизассемблере (disassembly view)
- Поддержка фреймворка для юнит-тестирования Catch
- Значительное ускорение отклика редактора при печати кода (Zero Latency Typing)
- И, наконец, экспериментальная поддержка компилятора Microsoft Visual C++!
И это еще не все! Читайте подробности ниже.
Кстати, попробовать все новые возможности можно на небольшом демо-проекте, который мы специально подготовили для этих целей.
Читать полностью »
Что приняли в C++17, фотография Бьярне Страуструпа и опрос для C++20
2017-03-21 в 15:29, admin, рубрики: c++, c++ библиотеки, c++17, c++2a, IT-стандарты, standard library, standards, Алгоритмы, Блог компании Яндекс, Компиляторы
В начале марта в американском городе Кона завершилась встреча международной рабочей группы WG21 по стандартизации C++ в которой участвовали сотрудники Яндекса.
Заседания, как обычно, занимали целый день плюс дополнительно заседала подгруппа по работе с числами.
Основное время было посвящено полировке черновика C++17, но несколько небольших и интересных нововведений все же успели проскочить в C++17.
Читать полностью »
Энное время назад в одной XMPP-комнате, посвященной C++, один посетитель спросил, нет ли какого способа в современных плюсах без лишнего кода передать указатель на функцию-член класса в качестве коллбека в C API. Ну, что-то вроде
// C API
void doWithCallback (void (*fn) (int, void*), void *userdata);
// C++ code
struct Foo
{
void doFoo (int param);
};
int main ()
{
Foo foo;
doWithCallback (MAGIC (/* &Foo::doFoo */), &foo);
}
Понятно, что в качестве MAGIC
можно использовать свободную функцию, статическую функцию-член или вообще лямбду (2017-й год на дворе, всё-таки), но писать соответствующую конструкцию каждый раз для каждой функции руками несколько лениво, а препроцессор, как мы все, конечно, знаем — моветон.
В этом посте мы попробуем (и, что характерно, у нас это получится) написать универсальную обёртку, а заодно посмотрим, как кое-какая фишка из C++17 поможет нам ещё сократить количество избыточного кода. Никаких крышесносных шаблонов здесь не будет, решение, на мой взгляд, достаточно тривиально, но, пожалуй, им всё равно имеет смысл поделиться (и заодно лишний раз попиарить новые возможности C++17).
C++17 изменения вывода auto при фигурной инициализации
2017-01-13 в 12:29, admin, рубрики: c++, c++17В GCC7 реализован последний стандарт С++17 (будет принят в этом году)
gcc.gnu.org/projects/cxx-status.html#cxx1z
Хотелось бы обратить внимание, что изменились правила вывода типа auto при фигурной инициализации.
С++17 и С++2a: новости со встречи ISO в Иссакуа
2016-12-01 в 14:55, admin, рубрики: c++, c++17, c++2a, IT-стандарты, standard library, standards, Алгоритмы, Блог компании Яндекс, Компиляторы, яндексВ начале ноября в американском городе Иссакуа завершилась встреча международной рабочей группы WG21 по стандартизации C++ в которой участвовали сотрудники Яндекса. На встрече «полировали» C++17, обсуждали Ranges, Coroutines, Reflections, контракты и многое другое.
Заседания, как обычно, занимали целый день + решено было сократить обеденный перерыв на пол часа, чтобы успеть побольше поработать над C++17.
Несмотря на то, что основное время было посвящено разбору недочётов черновика C++17, несколько интересных и свежих идей успели обсудить, и даже привнести в стандарт то, о чём нас просили на cpp-proposals@yandex-team.ru.
Читать полностью »
Элементы функционального программирования в C++: частичное применение
2016-10-24 в 9:31, admin, рубрики: c++, c++17, Программирование, Проектирование и рефакторинг, простые решения сложных проблем, функциональное программирование, частичное применениеНе буду сильно углубляться в теорию. Что такое частичное применение легко найти в интернете. В том числе на Википедии.
Если кратко, то это механизм, возволяющий зафиксировать k
аргументов функции от n
аргументов, сделав из неё функцию от (n - k)
аргументов.
// Пусть имеется функция f от четырёх аргументов:
int f (int a, int b, int c, int d)
{
return a + b + c + d;
}
// Фиксируем первые два аргумента:
auto g = part(f, 1, 2); // 1 + 2 + ...
// Добрасываем оставшиеся два:
assert(g(3, 4) == 10); // ... + 3 + 4 = 10
На эту тему уже существует масса публикаций, в том числе и на Хабре:
- C++ Variadic templates. Каррирование и частичное применение
- Частичное применение и каррирование в C++
- Каррируем на C++
А ветка "How should I make function curry?" на stackoverflow — просто кладезь для тех, кто впервые сталкивается с этой темой.
К сожалению, количество пока не переросло в качество, и хорошего, пригодного к использованию варианта я так и не увидел.
При этом любопытно вот что.
Замечательный факт №1. В упомянутых статьях присутствуют все техники, которые нужны для реализации правильного (по моему мнению) частичного применения.
Надо только всё внимательно проанализировать и сложить кубики в правильном порядке.
Именно этим я и собираюсь заняться в данной статье.
Как избежать ошибок, используя современный C++
2016-09-15 в 9:42, admin, рубрики: C, c++, c++11, C++14, c++17, modern c++, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, Компиляторы, Программирование, статический анализ кода
Одной из проблем C++ является большое количество конструкций, поведение которых не определено или просто неожиданно для программиста. С такими ошибками мы часто сталкиваемся при использовании статического анализатора кода на разных проектах. Но, как известно, лучше всего находить ошибки ещё на этапе компиляции. Посмотрим, какие техники из современного C++ позволяют писать не только более простой и выразительный код, но и сделают наш код более безопасным и надёжным.
Читать полностью »
Последние новости о развитии C++
2016-07-13 в 16:19, admin, рубрики: c++, c++ библиотеки, c++11, C++14, c++17, IT-стандарты, standard library, stl, Алгоритмы, Блог компании Яндекс, Компиляторы, метки: c++17Недавно в финском городе Оулу завершилась встреча международной рабочей группы WG21 по стандартизации C++, в которой впервые официально участвовали сотрудники Яндекса. На ней утвердили черновой вариант C++17 со множеством новых классов, методов и полезных нововведений языка.
Во время поездки мы обедали с Бьярне Страуструпом, катались в лифте с Гербом Саттером, жали руку Беману Дейвсу, выходили «подышать воздухом» с Винцентом Боте, обсуждали онлайн-игры с Гором Нишановым, были на приёме в мэрии Оулу и общались с мэром. А ещё мы вместе со всеми с 8:30 до 17:30 работали над новым стандартом C++, зачастую собираясь в 20:00 чтобы ещё четыре часика поработать и успеть добавить пару хороших вещей.
Теперь мы готовы поделиться с вами «вкусностями» нового стандарта. Всех желающих поглядеть на многопоточные алгоритмы, новые контейнеры, необычные возможности старых контейнеров, «синтаксический сахар» нового чудесного C++, прошу под кат.
Читать полностью »
Сотрудники Яндекса будут представлять Россию в комитете по стандартизации C++
2016-05-24 в 8:00, admin, рубрики: c++, C++14, c++17, IT-стандарты, standard library, standards, Блог компании Яндекс, Программирование, С++, Совершенный код, яндексХочу поделиться с вами радостной новостью: теперь мы можем влиять на развитие C++! Под «мы» я имею в виду всех российских программистов, работающих с C++.
Но обо всем по порядку.
Читать полностью »