Some of the features for C++ that we've already implemented in ReSharper include the following:
Context-insensitive navigation including Go to Type, Go to Symbol, Go to File Member and Go to Everything. Context-sensitive navigation including Go to Declaration, Go to Derived Symbols, Go to Implementation and Go to Base Symbols — everything that's usually available via ReSharper's Navigate To menu. Find Usages of C++ code symbols with preview, filtering and grouping in the list of found occurrences. Introduce Variable, Extract Method and Rename refactorings. Context actions to transform macro calls, auto-insert #include directives, create local and global variables, enums, class members or functions from usage, initialize fields from constructor parameters and remove redundant parentheses. Thorough understanding of C++ templates to correctly resolve different template specializations and navigate between them. Code generation to quickly create a constructor, add missing members, overrides or implementations and support for Live and Surround templates.
C++ Support in ReSharper
Looking for a cross-platform C/C++ IDE? Try our CLion EAP.
ReSharper with C++ support is provided as a part of Early Access Program, which means that we can't guarantee that builds will even run. C++ is a complicated language to support, and significant parts of the C++ language ecosystem are not yet supported. See below for details on the extent of support for language versions, libraries and extensions. Please examine the limitations carefully before deciding whether to proceed with downloading and installing an EAP build.
What is supported?
C, C++03 and a part of C++11. Code bases up to 40 Mb. Most Boost libraries.
What is partially supported?
C++11 lambda expressions. The following MS C++ extensions: __uuidof keyword __pragma keyword
What is not supported?
Code bases exceeding 40 Mb: significant performance issues are expected. Microsoft libraries including MFC, ATL and WTL. A set of C++11 features including constexpr expressions The following MS preprocessor extensions: #import preprocessor directive #pragma push_macro/pop_macro directive Charizing operator (#@) The following MS C++ extensions: C++ component extensions C++ CLI extensions A new line immediately preceded by a backslash inside identifiers, keywords and numeric literals __identifier keyword _if_exists/_if_not_exists statement Based pointers Event handling in native C++ __super keyword Microsoft C++ implementation of name resolution in templates
What known issues are there?
In Visual Studio 2013 there can be red code as Standard Template Library uses unsupported C++11 features. Find Usages and Rename do not handle references in dependent code. Files that belong to multiple projects are not highlighted and might be handled incorrectly. Search for conflicts during rename of non-local symbols is not implemented. "Fonts & Colors" settings might not appear in Visual Studio after installation (although there's a workaround). For a better experience with ReSharper C++ EAP we recommend disabling Visual Studio native C++ support. In order to do this please go to Tools | Options | Text Editor | C/C++ | Advanced | Browsing/Navigation and set Disable Database to True.