The JetBrains Blog

ReSharper C++ 2026.2: C++26 Reflection, ISPC Language Support, And More

8.5内容质量
ReSharper C++ 2026.2: C++26 Reflection, ISPC Language Support, And More

TL;DR · AI 摘要

JetBrains发布ReSharper C++ 2026.2,新增C++26反射、ISPC语言支持及Unreal项目优化。

核心要点

  • C++26反射支持通过^^操作符和[: ...:]语法实现编译时内省
  • ISPC语言支持加速CPU并行编程开发
  • Unreal项目索引速度提升显著优化开发体验

结构提纲

按章节快速跳转。

  1. 介绍ReSharper C++ 2026.2主要更新内容

  2. ·C++26反射支持

    详细解析反射操作符和语法实现机制

  3. 阐述对Intel SPMD编程模型的支持方案

  4. 说明Unreal项目索引速度提升的具体实现

  5. 描述动态内存分配和异常处理能力升级

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • ReSharper C++ 2026.2更新
    • C++26反射
      • reflect操作符
      • splice语法
      • 编译时查询
    • ISPC支持
      • SPMD编程模型
      • CPU并行优化
    • 性能提升
      • Unreal项目加速
      • constexpr评估器增强

金句 / Highlights

值得收藏与分享的关键句。

#C++#ReSharper#ISPC#JetBrains
打开原文

ReSharper C++ 2026.2:C++26反射、ISPC语言支持及其他 - JetBrains博客

ReSharper C++

Visual Studio的C++开发扩展

关注

  • 关注:
  • X X
  • YouTube YouTube
  • RSS RSS

下载

.NET工具

新闻

版本发布

ReSharper C++

ReSharper C++ 2026.2:C++26反射、ISPC语言支持及其他

Igor Akhmetov

ReSharper C++ 2026.2现已发布,带来对C++26反射的初步支持,这是近年来C++语言最受期待的新增特性。

此版本还引入了ReSharper中的ACP代理支持(Junie是首个可用代理),新增对ISPC语言的支持,并显著提升了Unreal Engine项目中的索引速度。其他亮点包括constexpr求值器的更新、新的代码检查功能以及重构增强。

如需查看完整的更新内容,请参阅ReSharper C++ 2026.2的《新功能》页面。在本文中,我们将重点介绍最重要的变更和改进。

下载ReSharper C++ 2026.2

C++支持

C++26反射

本版本的核心特性是C++26反射,这是语言历经长期期待后新增的重要功能,实现了编译时自省和代码生成能力。

通过此次更新,ReSharper C++现已识别以下核心反射原语:

  • ^^(reflect)运算符,用于生成表示被反射实体的std::meta::info值。
  • [: ... :](splice)语法,可将反射值转换回语言构造。
  • 对反射类型、成员、枚举项及其他实体的编译时查询。

目前主要C++编译器中,仅GCC 16支持C++26反射。目前在Visual Studio中尝试C++26反射的一种方式是:创建Linux C++项目,并通过WSL在包含GCC 16的Linux发行版(如Fedora 44)上进行编译。

相关C++26特性

反射支持与以下两个C++26语言特性相辅相成:

  • ReSharper C++现已支持consteval { ... }代码块,这些代码块在编译时执行,并能向外围作用域注入声明。consteval代码块为触发编译时副作用提供了清晰的方式,特别适用于结合反射的实用元编程场景。
  • 现在可以将用户自定义注解附加到声明上,并通过反射API进行查询,从而实现基于自定义元数据的代码生成。

constexpr求值

我们还为constexpr求值器新增了两项重要功能:

  • 求值器现在支持在常量求值期间进行动态内存分配——这是C++20引入的功能。这使得能够正确评估使用new/delete或标准容器(如std::vector和std::string)的constexpr代码。
  • 求值器现在支持C++26的constexpr异常,并能在常量求值期间处理try/catch和throw表达式。

ISPC语言支持

我们新增了对ISPC(Intel SPMD程序编译器)的支持,这是一种专为CPU高性能并行编程设计的语言。ISPC基于SPMD编程模型,您编写的标准串行程序在运行时会以并行方式在目标硬件上执行多个实例。ISPC广泛应用于游戏引擎、渲染系统和科学计算领域,包括Unreal Engine项目。

ReSharper C++ 现在为 ISPC 文件提供语法高亮、代码分析、导航和编码辅助功能,使您的 ISPC 代码能够享受到与 C++ 相同质量的编辑器支持。

Unreal Engine

性能

此版本在 Unreal Engine 项目启动期间带来了重大性能改进。ReSharper C++ 现在利用 UnrealBuildTool 提供的项目信息,通过仅分析包含在 Unreal Engine 项目模型中的文件来加速初始索引。结合其他优化(包括多线程索引的改进),这显著提升了性能。

根据我们在 Lyra 示例解决方案上的测试结果:

  • C++ 代码的初始索引速度提升了高达 55%。
  • 在热启动期间加载 C++ 缓存的速度提升了高达 35%。

您可以通过取消勾选 "Code Editing | C/C++ | Unreal Engine" 设置页面中的 "Index only files in Unreal Engine project model" 选项来禁用新的索引行为。

蓝图支持

蓝图支持也进行了重大改进,显著提升了索引速度。在 Lyra 示例解决方案中,蓝图索引速度提升了高达 40%,但您项目中的具体提升速度取决于资源的结构。

ReSharper C++ 现在还能发现蓝图资源中游戏标签的使用情况,并在 Code Vision 和 "Find usages" 结果中显示这些信息,让您全面了解项目中游戏标签的使用位置。

代码分析

内部链接

新的 "Internal linkage" 检查功能可以检测在翻译单元外部未使用的函数、变量和类。您可以使用提供的修复方案将这些实体标记为 static 或移动到匿名命名空间中,这有助于编译器优化并防止意外的链接冲突。

聚合初始化中的指定初始化器

ReSharper C++ 现在建议在聚合初始化的括号初始化列表中添加指定符。自 C++20 和 C99 引入的指定初始化器可以明确每个初始化项对应的成员,提高代码可读性,并减少成员重新排序时出错的可能性。即使禁用检查功能,也可以使用对应的上下文操作。

对重写基类函数的调用

另一个新检查功能可以检测派生类中对重写基类虚函数的限定调用。直接调用基类虚函数而非通过虚函数调度可能导致微妙的错误,此检查功能有助于发现此类情况。

[[jetbrains::used_implicitly]] 属性

ReSharper C++ 现在可以识别 [[jetbrains::used_implicitly]] 属性,该属性可以应用于符号以抑制其他检查建议修改其签名或链接的提示。这对于通过反射、代码生成或其他静态分析不可见的机制使用的符号非常有用。

编码辅助

重构改进

两个重构改进使代码重构更加容易:

  • 在函数声明上使用 "Inline Function" 现在会在整个代码库中内联该函数的所有用法,而不仅仅是光标下的用法。
  • "Extract Method" 重构功能现在可以在 lambda 表达式体内使用,让您将 lambda 的部分代码提取到单独的函数中。

上下文操作

新的上下文操作可帮助完成日常任务:

  • 一个新的上下文操作允许您轻松切换成员函数的 const 限定符。
  • 现在您可以快速插入 #pragma clang diagnostic ignored 指令,以抑制当前行的特定 Clang 警告信息。
  • 在 Unreal Engine 项目中,您现在可以通过「复制代码引用」菜单复制当前打开的头文件的包含路径,使粘贴正确的 #include 指令变得简单快捷。

告诉我们您的想法

本文介绍了主要亮点,但如果您想了解这些改进的完整细节,请前往 ReSharper C++ 2026.2 新特性页面。

下载最新版本,并告诉我们它在您的项目中的使用效果。

C++ 26

ISPC

  • 分享
  • Facebook
  • Twitter
  • LinkedIn

上一篇

Rider 2026.2:面向 AI 代理的 IDE 智能化、性能提升与令人惊叹的游戏开发更新