Boost 1.65 is available
A new version is here.
Boost 1.65 is available
From the article:
Version 1.65.0
August 21st, 2017 20:50 GMT
September 13-19, Aurora, CO, USA
October 25, Pavia, Italy
November 6-8, Berlin, Germany
November 3-8, Kona, HI, USA
By Adrien Hamelin | Aug 23, 2017 09:23 AM | Tags: community boost
A new version is here.
Boost 1.65 is available
From the article:
Version 1.65.0
August 21st, 2017 20:50 GMT
By Adrien Hamelin | Aug 23, 2017 09:19 AM | Tags: intermediate c++17
THe series continue.
C++17 in details: Parallel Algorithms
by Bartlomiej Filipek
From the article:
Writing multithreaded code is hard. You’d like to utilize all of the machine’s processing power, keeping code simple and avoid data races at the same time.
Let’s see how C++17 can make writing parallel code a bit easier.
By Adrien Hamelin | Aug 23, 2017 09:12 AM | Tags: community boost
Have you registered for CppCon 2017 in September? Don’t delay – Registration is open now.
While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2016 for you to enjoy. Here is today’s feature:
Safe Numerics Library
by Robert Ramey
Summary of the talk:
This presentation describes the necessity, utility and usage for a library of safe integer types. These types function in all respects the same way as built-in integers, but guarantee that no integer expression will return an incorrect result. The library can be reviewed at the boost library incubator.
By Adrien Hamelin | Aug 21, 2017 12:10 PM | Tags: community
ACCU’s Overload journal of June 2017 is out. It contains the following C++ related articles.
From the journal:
Editorial: Gnomes and Misnomers.
What's in a name? Frances Buontempo decides some names are better than others.The Path of the Programmer.
Charles Tolman provides a framework for personal development.A Usable C++ Dialect that is Safe Against Memory Corruption.
Sergey Ignatchenko continues his investigation of allocators for (Re)Actors.Metaclasses: Thoughts on Generative C++.
Herb Sutter shows how metaclasses could simplify C++ with minimal library extension.A C++ Developer Sees Rustlang for the First Time.
Katarzyna Macias provides an introduction to Rust for a C++ developer.Portable Console I/O via iostreams.
Alf Steinbach describes how his library fixes problems streaming non-ASCII characters in Windows.A Functional Alternative to Dependency Injection in C++.
Satprem Pamudurthy showcases a functional alternative to dependency injection in C++.About the C++ Core Guidelines.
Andreas Fertig shows us the C++ core guidelines.Afterwood.
Chris Oldwood reminds us to fix the problem, not to blame.
By Adrien Hamelin | Aug 21, 2017 11:58 AM | Tags: performance
Have you registered for CppCon 2017 in September? Don’t delay – Registration is open now.
While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2016 for you to enjoy. Here is today’s feature:
Instruction Re-ordering Everywhere: The C++ 'As-If' Rule and the Role of Sequence
by Charles Bay
Summary of the talk:
This is an introductory (i.e., "First Principles") dive into instruction re-ordering (at compile-time, and at run-time) due to conspiring by the compiler and CPU to make most efficient use of execution units and resources within the CPU processor core. Discussion is made of the role for sequence, for tracing of data flows and control flows, how "out-of-order" execution occurs within the compiler and CPU, and why that's a "good thing". The importance of the C++ "As-If" rule that allows these optimizations is explained.
Exploration is made of imperative versus sequential devices, physical versus logical sequences, and the role of the CPU cache line. At the end of this talk, it will be obvious for how and why instruction re-ordering occurs, and the programmer's need to consider logical dependencies (and not instruction order) when defining algorithms.
This talk is ideal for any programmer confused after observing instruction reordering in their running systems, and provides a solid basis to begin reasoning about how to leverage parallelism and be concerned with concurrency.
By Adrien Hamelin | Aug 18, 2017 12:11 PM | Tags: intermediate c++11
Quick Q: Delete its constructor
Recently on SO:
Make C++ fail compilation on specific instantiation of template function
Since foo is a complete specialization, it will always get compiled, and the static assert will always get called.
However, there’s an easier way:
template <> Bar foo<Bar>(Bar val) = delete;This will say that this specific version is deleted, and cannot be called.
By Adrien Hamelin | Aug 18, 2017 11:59 AM | Tags: efficiency advanced
Have you registered for CppCon 2017 in September? Don’t delay – Registration is open now.
While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2016 for you to enjoy. Here is today’s feature:
Regular Expressions in C++, Present and Future
by Tim Shen
Summary of the talk:
Regular expressions are widely used in application development and data processing, yet it is challenging to design and implement a regular expression library that is expressive, efficient and safe.
In this talk, Tim Shen, the current maintainer of libstdc++'s <regex>, will introduce the basics of implementing regular expressions in C++, the status of existing implementations, and what is expected from the standardization process.
For the implementation, several data structures and algorithms will be introduced, with pros and cons listed; we will show how several popular implementations (Boost.Regex, Boost.Xpressive, <regex> from standard library implementations, RE2, etc) pick their algorithms. Several popular features/patterns that hurt performance will be explained, with a "safe" regex usage suggested. Finally a wishlist of features will be presented, in order to deliver a more efficient and usable regex library.
By robwirving | Aug 18, 2017 10:18 AM | Tags: None
Episode 114 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Simon Brand from Codeplay Software to talk about building C++ debuggers and the hardware and C++ firmware of a custom keyboard.
CppCast Episode 114: Building Debuggers and Keyboards with Simon Brand
About the interviewee:
Simon is a GPGPU toolchain developer at Codeplay Software in Edinburgh. He turns into a metaprogramming fiend every full moon, when he can be found bringing compilers to their knees with template errors and debating undefined behaviour on the C++ Slack channel. He co-organises the Edinburgh C++ user group and contributes to various programming standards bodies.
Outside of programming, he enjoys experimental films, homebrewing, and board games.
By Eric Niebler | Aug 17, 2017 03:56 PM | Tags: intermediate experimental c++20
Eric Niebler shares his thoughts about the interaction of ranges and co-routines in his recent blog post.
Ranges, Coroutines, and React: Early Musings on the Future of Async in C++
by Eric Niebler
From the article:
Another way to look at this is that synchronous ranges are an example of a pull-based interface: the user extracts elements from the range and processes them one at a time. Asynchronous ranges, on the other hand, represent more of a push-based model: things happen when data shows up, whenever that may be. This is akin to the reactive style of programming.
By using ranges and coroutines together, we unify push and pull based idioms into a consistent, functional style of programming. And that’s going to be important, I think.
By Adrien Hamelin | Aug 15, 2017 01:51 PM | Tags: intermediate c++11
The series continues.
Your own error condition
by Andrzej Krzemieński
From the article:
In the previous post we have seen how you can create your own error-code enumeration for representing different reasons for failure in your component, and how you can store them and convey them type erased via std::error_code. In this post we will see how you can inspect an error situation encoded in std::error_code, and how you can build useful queries about error conditions.