Early Access Program

ReSharper C++ 2020.3 Early Access Program Is Now Open

We’re excited to announce the start of the Early Access Program for ReSharper C++ 2020.3! If you’ve never participated in our Early Access Program before, in short, the EAP means that we’ll be rolling out a new build every week, and these builds are free to use. We encourage you to join and share your thoughts on the latest improvements and functionality so that we can make ReSharper C++ better for you.

ReSharper C++ 2020.3 EAP

You can download the EAP builds from our website or via the Toolbox App.


Here are some of the highlights of the first EAP build. The full list of issues fixed in this update available in our issue tracker.

Unreal Engine

We’ve introduced live tracking for Unreal Engine properties: as soon as you save changes in .Build.cs, .Target.cs, .uproject, or .uplugin files, ReSharper C++ will regenerate the project model. Note that it will only update the affected files, so it is pretty fast:

Live tracking for Unreal Engine properties

For casting a reference to an rvalue reference, ReSharper C++ now suggests you use MoveTemp – Unreal Engine’s equivalent of std::move. It will appear in quick-fixes and code completion when applicable:

Unreal Engine's MoveTemp

According to the Unreal Engine coding standard, tabs the size of 4 characters should be used for indentation. We still auto-detect your formatting and will not force you to use tabs if you prefer spaces, but our default settings for Unreal Engine projects now follow these guidelines.

C++20 Ranges

C++20 includes the new ranges library, which provides an extensive set of utilities for working with ranges of elements. Among other things, this library offers a convenient way to compose algorithms that operate on ranges and allows you to pass a collection directly without the begin and end iterators.

What would you say if ReSharper C++ 2020.3 helped you adopt the new ranges approach and suggested modernizing your code? We’ve just added two new inspections with quick-fixes for precisely this purpose!

  • An algorithm operating on ranges can be used.
    An algorithm operating on ranges can be used
  • std::views::keys/values can be used.
    std::views::keys/values can be used

Note that ranges are not fully supported by MSVC yet, but you can still experiment with new language features.

Coding assistance and completion

We’ve improved argument code completion for library functions that accept macro constants. Library macro constants that are applicable to the current argument are now prioritized in the completion list. This heuristic works for functions from the standard library, WinAPI, and OpenGL.

Library macro constants

A new context action will help you to invert a ternary operator expression:

Invert a ternary operator expression

The “Join declaration and assignment” quick-fix is now available for cases when a local variable is reassigned in all paths before being read:

Join declaration and assignment

Faster operations on private class members

This build includes an important performance improvement when performing Find Usages and Rename on private class members. If the containing class does not have any friend classes, ReSharper C++ will now look for class member usages only in files that contain the class definition and the definitions of its member functions. The narrowed search domain means that Find Usages and Rename will usually finish much faster when invoked on private class members. For huge code bases, this optimization makes Find Usages 50 and even 100 times faster (for example, for the Data and Length fields of the LLVM StringRef class).

Those are the biggest highlights for this first EAP build. Please report any issues you encounter to our issue tracker. And stay tuned for the next week’s update!


Your ReSharper C++ team
The Drive to Develop

image description