Articles & Books

C++20: A Simple math Module--Rainer Grimm

The series continue.

C++20: A Simple math Module

by Rainer Grimm

From the article:

Modules are one of the four prominent features of C++20. They overcome the restrictions of header files and promise a lot: faster build-times, fewer violations of the One-Definition-Rule, less usage of the preprocessor. Today, I want to create a simple math module...

Ray Tracing in one weekend with SYCL

SYCL is an open standard developed by the Khronos™ Group that enables developers to write code for heterogeneous systems using standard C++.

Ray-tracing in a Weekend with SYCL: Basic sphere tracing

by Codeplay

About the article

C++ Ray-Tracing in a Weekend by Peter Shirley is a great resource to start learning about ray-tracers and how to implement one, and at the same time providing all the source code in a GitHub repository . You can find more information about his books on ray-tracing techniques with accompanying implementations on his blog, and you can also download the books as .pdf, or load them on your Kindle device for free from the GitHub project.

The main goal of this blog post is not to teach the concepts of ray-tracing, Peter does a great job of that, but provide a walk-through tutorial on how to accelerate practical applications and algorithms using SYCL.

Meeting C++ Blogroll now available as a weekly newsletter

Since more then 5 years the Meeting C++ Blogroll exists on meetingcpp.com, now its also available as a weekly newsletter!

Meeting C++ Blogroll now available as a weekly newsletter

by Jens Weller

From the article

You can now subscribe to the blogroll as a weekly newsletter, and receive every friday what has been posted on blogs and videos about C++ directly from Meeting C++ by email! If you already have an Meeting C++ Account, you can subscribe via the profile edit page.

Ordering by constraints--Andrzej Krzemieński

Moving to C++20!

Ordering by constraints

by Andrzej Krzemieński

From the article:

In the previous post we have seen how constraint conjunction and disjunction works, and how a function template with constraints is a better match than a function template without constraints (provided that the constraints are satisfied) when determining the best overload. We have also mentioned that selecting a better match from two constrained templates is possible, but not obvious. In this post we will expand on this, and show how constraint conjunction and disjunction as well as concepts play an important role in ordering function overloads and class template specializations based solely on constraints. This is one of the situations where language concepts show their special properties...

Nifty Fold Expression Tricks--Jonathan Müller

Many things can be done!

Nifty Fold Expression Tricks

by Jonathan Müller

From the article:

Suppose you need to have a variadic function and want to add all arguments together. Before C++17, you need two pseudo-recursive functions:

template <typename H, typename ... T>
auto add(H head, T... tail)
{
    return head + add(tail...);
}

template <typename H>
auto add(H head)
{
    return head;
}

However, C++17 added fold expressions, making it a one-liner:

template <typename H, typename ... T>
auto add(H head, T... tail)
{
    return (head + ... + tail);
    // expands to: head + tail[0] + tail[1] + ...
}

If we’re willing to abuse operator evaluation rules and fold expressions, we can do a lot more. This blog posts collects useful tricks...