Hiring for C++ with Meeting C++
A presentation on the results of the Meeting C++ online job fair in 2022 & 2023 and the plans for the next for May 9th & 10th
Hiring for C++ with Meeting C++
by Jens Weller
Video:
June 16-21, Sofia, Bulgaria
September 13-19, Aurora, CO, USA
October 25, Pavia, Italy
November 6-8, Berlin, Germany
November 16-21, Kona, HI, USA
By Meeting C++ | Apr 21, 2023 02:24 AM | Tags: meetingcpp hiring community
A presentation on the results of the Meeting C++ online job fair in 2022 & 2023 and the plans for the next for May 9th & 10th
Hiring for C++ with Meeting C++
by Jens Weller
Video:
By Blog Staff | Apr 20, 2023 01:15 PM | Tags: None
This post is an updated version of an article from five years ago, now that everything Sy talked about is in the standard and implemented in Visual Studio.
Functional Exception-less Error Handling with C++23’s Optional and Expected
by Sy Brand
From the article:
In software things can go wrong. Sometimes we might expect them to go wrong. Sometimes it’s a surprise. In most cases we want to build in some way of handling these misfortunes. Let’s call them disappointments.
std::optional
was added in C++17 to provide a new standard way of expressing disappointments and more, and it has been extended in C++23 with a new interface inspired by functional programming.
By Blog Staff | Apr 19, 2023 09:09 AM | Tags: None
This post explains the benefits of the new “rangified” algorithms, talks you through the new C++23 additions, and explores some of the design space for fold algorithms in C++.
C++23’s New Fold Algorithms
by Sy Brand
From the article:
C++20’s algorithms make several improvements to the old iterator-based ones. The most obvious is that they now can take a range instead of requiring you to pass iterator pairs. But they also allow passing a “projection function” to be called on elements of the range before being processed, and the use of C++20 concepts for constraining their interfaces more strictly defines what valid uses of these algorithms are. These changes allow you to make refactors like:
// C++17 algorithm cat find_kitten(const std::vector<cat>& cats) { return *std::find_if(cats.begin(), cats.end(), [](cat const& c) { return c.age == 0; }); } // C++20 algorithm cat find_kitten(std::span<cat> cats) { return *std::ranges::find(cats, 0, &cat::age); }
By Blog Staff | Apr 18, 2023 06:55 PM | Tags: None
The annual global C++ developer survey is now open. As the name suggests, it's a one-pager:
2023 Annual C++ Developer Survey "Lite"
Please take 10 minutes or so to participate! A summary of the results, including aggregated highlights of common answers in the write-in responses, will be posted publicly here on isocpp.org and shared with the C++ standardization committee participants to help inform C++ evolution.
The survey closes in one week.
Thank you for participating and helping to inform our committee and community!
By Blog Staff | Apr 17, 2023 10:40 AM | Tags: None
The Broker Pattern structures distributed software systems that interact with remote service invocations. It is responsible for coordinating the communication, its results, and exceptions.
Broker
by Rainer Grimm
From the article:
The Broker Pattern from the book "Pattern-Oriented Software Architecture, Volume 1" helps solve many challenges of distributed systems, such as finding the appropriate service provider, communicating with them securely, using the right programming language, or dealing with errors. This will not go into the details. It should only provide you with a rough idea of the Broker Pattern. For further information, study the pattern in the book "Pattern-Oriented Software Architecture, Volume 1".
By Blog Staff | Apr 13, 2023 04:50 PM | Tags: None
In this article, I cover Default constructuctible lambdas.
C++20 Lambda Extensions: Lambda Default Constructors
by Gajendra Gulgulia
From the article:
1. Default construction: Very short background
In C++ objects are default constructible if they satisfy certain conditions. The set of conditions vary and I’ll not go into all the details of what they are as it will be out of the scope of this article. Consider the Person class with default constructor in line 3.
class Person{ public: Person() = default; //default constructor Person(std::uint32_t age, std::string name): age_{age}, name_{name} { /*empty body */ } std::string getName() const { return name_;} std::uint32_t getAge() const { return age_; } void setAge(const std::uint32_t age) {age_ = age;} void setName(const std::string& name){name_ = name;} private: std::uint32_t age_{}; std::string name_{}; };
By Legalize Adulthood | Apr 13, 2023 01:03 PM | Tags: None
Utah C++ Programmers has released a new video:
TCP/IP Networking with Boost.Asio
by Richard Thomson
From the video description:
Boost.Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.
This month, Richard Thomson will continue our look at Boost.Asio with a look at TCP/IP networking. We'll look at how to implement an NNTP (Network News Transport Protocol) client using Boost.Asio. NNTP is a line-oriented protocol for reading usenet news articles. This will give us insight into all the typical issues involved in a TCP/IP networking application:
- How do we resolve a host name into an IP address?
- How do we establish a long-lived connection to an NNTP server?
- How do we handle the arbitrarily large amounts of data from an NNTP server that arrives asynchronously?
- How do we coordinate user input with NNTP I/O?
- How do we handle unexpected network errors?
By TartanLlama | Apr 13, 2023 01:02 PM | Tags: c++20
If you want to find out more about the std::ranges::fold_* algorithms in C++23, here's a new post for you.
C++23’s New Fold Algorithms
By Sy Brand
From the article:
C++20 added new versions of the standard library algorithms which take ranges as their first argument rather than iterator pairs, alongside other improvements. However, key algorithms like std::accumulate were not updated. This has been done in C++23, with the new std::ranges::fold_* family of algorithms.
By Meeting C++ | Apr 13, 2023 08:37 AM | Tags: meetingcpp community
Today this years edition of the Meeting C++ conference has been announced:
Announcing Meeting C++ 2023
by Jens Weller
From the article:
This years Meeting C++ conference will be held in Berlin on the 12th - 14th November!
Like in the previous year, we will be hosting 3 tracks on site and plan for a prerecorded online track. The online part also will include live streams from all onsite talk tracks.
Tickets are available via event brite...
By Blog Staff | Apr 11, 2023 04:48 PM | Tags: None
The layers pattern splits a task into horizontal layers. Each layer has a specific responsibility and provides a service to a higher layer.
Layers
by Rainer Grimm
From the article:
The Layers Pattern is an architectural pattern that helps, according to the book "Pattern-Oriented Software Architecture, Volume 1", to bring structure into the mud.
Although not specified, most layered architectures consist of three or four layers. Each layer is independent of the other layer. In the pure version, a layer can only access its layer below. A layer can not access its upper layer because it would create additional dependencies and complicates the control structure. Additionally, another application cannot easily use a layer that depends on an upper layer. A layer often provides its functionality by implementing the Facade Pattern. The Facade Pattern provides a simplified interface to a complex system.