Meeting 25 January 2018

CLion 2018.1 EAP

Announcement

  • Windows System for Linux (WSL) support
  • If and switch with initializers from C++17
  • CMake changes: open single file/open folder
  • Performance improvements: incremental highlighter
  • MSVC supported automatically if installed

Best C++ build system?

Reddit

Unicode in C++ - James McNellis - Meeting C++ 2016

A CMS written in C++

Blog

See also: Building a website with C++

CppCon 2017: Vinnie Falco - Make Classes Great Again! (Using Concepts for Customization Points

Your own type predicate in C++11

Post

A gentle intro to metaprogramming, metafunctions and type traits.

1static_assert(is_acceptable<X>::value,
2              "X does not have a desired interface");
3
4template <typename... T>
5using void_t = void;

std::launder - Réka Kovács - Lightning Talks Meeting C++ 2017

1#include <new>
2struct X { const int n; double m; }
3int main() {
4    X p{3, 8.8};
5    new (&p) X{5, 7.7};
6    int b = std::launder(&p)->n; // 5
7    double c = p.m; // UB!
8}

CppCon 2017: Juan Arrieta - Traveling the Solar System with C++: Programming Rocket Science

CppCon 2017: Lars Knoll - Qt as a C++ Framework: History, Present State and Future

Comments are divided:

  • “A good presentation, lots of people use Qt”
  • “This is more of an ad than a talk, why do we waste our time?”
  • “I really hate how they try to hide that Qt is free for commercial development”
  • “Qt is more and more a dead end in GUI development. It’s not done like this anymore. Use Qt for basic operations of your common code but move to the platform specific code for GUI. They look so ugly now and even GTK is better than Qt.”
  • new - this is why your library is so bad. Just stop.”

A C++ Hello World And the Cute Heartless Rainbow

Callbacks in C++

Article

  • Function pointer
  • Pointer to member function
  • Functor
  • Lambda

Stiffstream C++ libraries

  • SObjectizer – a framework for building solid multithreaded applications. It is based on async message exchange and uses a mixture high-level abstractions: Actor-Model, Publish-Subscribe and Communicating Sequential Processes.
  • RESTinio – header-only C++14 library that gives you an embedded HTTP server with nice express-like routing (although it is not mandatory to use router) and websockets on board.
  • timertt – The timertt (Timer Thread Template) library was created as a lightweight alternative of ACE Framework’s timers for SObjectizer.

Boost 1.66 released

Release page

Futures_cpp for C++11

GitHub – A future and stream library for modern C++ (MIT)

Cereal – a C++11 serialization library

Website

  • Header-only
  • Similar to Boost serialization, with easy transition
  • Formats: binary, XML, JSON, custom
  • No external dependencies
  • Supports std::shared_ptr and std::unique_ptr
  • BSD

CLI11 1.3

A powerful library for writing beautiful command line interfaces in C++11. No dependencies, header-only, BSD 3-Clause.

Pugixml

Light-weight, simple and fast XML parser for C++ with XPath support

Quotes

Unknown:

Java: write once, run away.

Unknown from Twitter:

Debuggers don’t remove bugs. They only show them in slow motion.

Twitter

Jon Purdy @whyevernotso:

People who deeply understand C++ are great to have on a team—not for their knowledge of C++, but for their ability to accept, cope with, and pragmatically manage things that other people would balk at and call insane, bug-prone, abject horrors.

Slava Pestov @slava_pestov, Apple Swift programmer:

This is very true, but there are like five people who deeply understand C++