What’s New in ReSharper C++ 2024.3

ReSharper C++ 2024.3 improves performance in large solutions, implements new C++23 and C23 features, and introduces the Move to Folder refactoring. In Unreal Engine projects, ReSharper C++ now offers code completion for gameplay tags and logging macro arguments, along with enhanced support for delegates.

Download

Free 30-day trial available

Performance improvements

In ReSharper C++ 2024.3, we focused on optimizing memory usage in large solutions, resulting in a significantly smaller memory footprint. According to our tests, memory usage after initial indexing is now approximately 20% lower for Unreal Engine and 30% lower for Chromium.

These memory savings, combined with optimizations to reduce memory traffic, have also boosted indexing speed. For example, the initial indexing of the LLVM solution is now up to 10% faster.

Language features

ReSharper C++ 2024.3 completes support for major C++23 features by implementing literal suffixes for size_t and attributes on lambda expressions. Additionally, the C++17 std::has_unique_object_representations type trait is now evaluated.

For C language users, ReSharper C++ adds support for the typeof and typeof_unqual keywords, as well as the __has_c_attribute macro from C23.

To enhance compatibility with non-MSVC compilers, ReSharper C++ implements several GNU language extensions, including switch case ranges, named variadic macro parameters, the transparent_union type attribute, and __attribute((aligned(...))). ReSharper C++ also recognizes many new compiler built-ins, including additional type traits and floating-point comparisons.

Unreal Engine

Code completion now suggests available category names and verbosity levels in the arguments of the UE_LOG and UE_LOGFMT macros. Built-in live templates with the same names help you quickly add new logging statements.

ReSharper C++ now discovers gameplay tags defined in your project and suggests them when completing the argument of the FGameplayTag::RequestGameplayTag function.

Enhanced support for the UDELEGATE macro includes completion of reflection specifiers inside macro attributes and tracking the number of usages from Blueprints for class members of delegate types.

If you’re interested in a standalone cross-platform IDE for Unreal Engine development, consider Rider. The Unreal Engine support in Rider and ReSharper C++ is aligned, and you can expect the same improvements in the Rider 2024.3 update.

Move to Folder refactoring

You can now easily move C++ files around with the Move to Folder refactoring. After moving the selected files to the new location, the refactoring updates #include directives to reflect the changes in the project structure.

Coding assistance

For users working with the C++20 ranges library, we’ve introduced new context actions that allow you to convert range adaptor usages between pipe and call forms. We’ve also improved diagnostic messages for overloading errors when using range adaptors in pipe form.

ReSharper C++ 2024.3 supports multiline TODO comments, allowing indented text on subsequent lines to be treated as a part of the same TODO item. Additionally, if you encounter a to-do item that links to an external issue, you can use the Peek To-do link action (Ctrl+Shift+Click) to display the issue inline.

Typing assistance now automatically inserts a space before an opening parenthesis when the Space before parentheses in control statements formatter option is enabled.

New formatter settings let you configure the braces style for C++/CLI properties and the line break before a function try block.

Code generation

If your project uses XML syntax for documentation comments instead of Doxygen, you can now easily customize the style of the default documentation template in the Code Generation settings. ReSharper C++ now also recognizes XML documentation within /** ... */ comments and displays it correctly in tooltips.

Another new setting lets you control whether code generation actions should preserve default function arguments when creating overriding functions.

Clang tooling integration

ReSharper C++ 2024.3 includes the clang-tidy and clang-format binaries from Clang 19, bringing new checks and improvements from the latest LLVM release.

// NOLINT(...) comments in your code that disable specific clang-tidy checks now also disable the corresponding ReSharper inspections.

The built-in formatter now recognizes // clang-format off and // clang-format on comments and turns formatting off in the delimited regions.

Take a look at the What's New in ReSharper page to learn about all the other changes introduced in this release.

Download

Free 30-day trial available