Visual Studio IDE

Announcement: Last fall, we migrated this forum to Visual Studio Developer Community to provide you one convenient and responsive system for all feedback. As the final step in the migration, this forum will be closed off completely on June 1st, 2019. We encourage you to visit Visual Studio Developer Community where you can now suggest new ideas, browse and vote on existing ideas, and engage with Visual Studio teams.

We’d like your suggestions and ideas to help us continuously improve future releases of Visual Studio, so we’ve partnered with UserVoice, a third-party service, to collect your feedback. Please do not send any novel or patentable ideas, copyrighted materials, samples or demos for which you do not want to grant a license to Microsoft.

This site is for feature suggestions; if you need to file a bug, you can visit our Developer Community website to get started.

Note: your use of the portal and your submission is subject to the UserVoice Terms of Service & Privacy Policy and license terms.

We look forward to hearing from you!
- The Visual Studio Team

I suggest you ...

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  • Hot ideas
  • Top ideas
  • New ideas
  • My feedback
  1. Make Visual C++ debugger recognize overloaded operators (especially -> and * because of smart pointers)

    With the introduction of smart pointers a debugging experience for C++ projects is totally hampered as the debugger does not recognize overloaded -> and * operators. If I, for example, have code like this

    struct S
    {
    int x = 1;
    };
    ...
    unique_ptr<S> s(new S());
    s->x = 5;

    then when having mouse over that x in s->x I don't see a tooltip displaying the value (being equal to one from constructor). Also putting s->x in a watch window does not help, I have either put the mouse above s and make two clicks to see the x (and then…

    13 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  2. Missing formatting option for C++ pointers and references

    This suggestion is migrated to Developer Community. Please use below link to view the current status.
    https://developercommunity.visualstudio.com/content/idea/351714/missing-formatting-option-for-c-pointers-and-refer.html
    There seems to be no way to set the desired style for pointers and references in the C++ code formatting options, i.e. placing the asterisk or the ampersand next to the type, next to the variable or keep it as is.

    This seems like a basic code formatting option that should have been implemented from the beginning, especially with the new refactoring feature. The generate method implementation feature always put <Type> * <name> or <Type> & <name>, no matter how the user declared…

    13 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  3. Suggest compiler warning for a constexpr function not evaluated at compile time

    a c++ function marked as constexpr can be evaluated at compile time if this is possible. Where this is not possible it will be evaluated as normal at compile time. However there is no way of knowing whether such a function is actually being evaluated at compile time or runtime.

    This suggestion is that for functions marked as constexpr that are not evaluated at compile time then the compiler issues an appropriate warning message detailing from where in the code these functions are being evaluated at run-time.

    12 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  4. 12 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  5. add a feature of auto fold inactive code

    add a feature of auto fold inactive code

    12 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  6. Add cmake to path

    I use a custom cmake command to copy shaders and kernels from my project to my build folder, mainly because the cmake copy command is cross platform. If cmake is integrated into visual studio 2017, then cmake should be added to the developer command prompt path as well.

    12 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  7. 11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  8. Pressing "Go to Definition" on the override keyword to go to the overridden function in base class

    It will be handy to have a way to go to the overridden function from the overriding function.

    I think an intuitive way will be to use "Go to Definition" feature on the override keyword.
    (similar to how we can use "Go to Definition" on the auto keyword)

    Thank you.

    11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  9. Official __format_string support for user-defined functions

    Currently the compiler and the IDE support checking and reporting errors when using printf(...) but there's no nice way to mark a user-defined function that it should also be checked similar to printf(...).

    There exists the not-well-documented __format_string macro but it's only enabled under /analyze which brings a lot of other heavy baggage and is only compile time.

    11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  10. Haswell MOVBE Intrinsic support

    The Intel Haswell processors introduced a new endian swap instructon, MOVBE, which is more efficient than bswap. Please add support for this instruction via intrinsics so we can use it in Visual C++.

    11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  11. C++ Compiler Extensibility

    Clang has LibClang which allows some degree of customization of compiler behavior.

    It would be greate to havethe possibility to query data and add data to the C++ compiler. This would allow implementations of features like compile time reflection and others by developers.

    Now this is only reasonably feasible with Clang/LibaClang.

    11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  12. recompile outdated PCH files automatically

    After each VS update I receive a lot of "Fatal Error C1853" because of "The precompiled header was compiled with a previous compiler version. Try recompiling the header with the current compiler."
    I would suggest, the compiler creating the PCH should simply recompile the PCH if this is required. On the otherhand why is a recompile necessary? For other files like OBJ it is not necessary.

    11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  13. 11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  14. Expand preprocessor macros for compiler diagnostics

    Debugging compiler errors in big macros is quite difficult currently, due to the compiler not highlighting the error in the preprocessed source, but the input.

    Both GCC and clang print useful diagnostics:

    foo.c: In function 'foo':
    foo.c:6:10: error: 'r' undeclared (first use in this function)
    return r; \
    ^
    foo.c:9:1: note: in expansion of macro 'LONG_MACRO'
    LONG_MACRO(int)

    MSVC, in comparison, only highlights the actual macro as an error:

    foo.c(9): error C2065: 'r': undeclared identifier

    The minimal example, plus the output of GCC and MSVC are attached.

    10 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  15. C++ Formatting options for * and &

    There's a lack of a C++ formatting option for spaces around & and * in arguments in the text editor settings for C/C++.

    There should be three options:

    int* arg
    int *arg
    int * arg

    10 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  16. Automatic formatting of C++ source is very helpful, but ...

    There are problems with the automatic formatting of "if" statements.

    For example, if I have a statement in the form of:

    if (function_name(parm1, parm2,
    parm3,parm4)) {

    it is not formatted as illustrated above. I believe everyone, regardless of their preferences for spacing and brace placement can agree that this is the preferred formatting. What is actually done is:

    if (function_name(parm1, parm2,
    parm3,parm4)) {

    This is clearly not correct. To make this clear, the continuation of function arguments is not aligned to the first argument but aligned to the beginning of the function call.

    10 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  17. Integrate CLang Extra Tools in VS

    See here
    http://clang.llvm.org/extra/index.html

    It is a set of nice tools based on CLang which can modernize legacy code to C++11, lint your code, reformat code, etc
    It is command line based but it is inconvenient to use when working with solutions. It will be lovely to have it in solution context menu.

    10 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  18. NMake batch mode support for CMake

    It would be great if MS could contribute to CMake, so it would support multi-core builds using the NMake back-end.

    9 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  19. Add C++17 support for the LLVM-vs2014 toolset

    The clang-cl compiler frontend version 6 (recently released) supports the /std:c++17 argument, however this option is still hidden in project settings.

    While some features are working when manually adding this argument (such as std::wstring::data()), some major C++17 headers (such as optional) are not in the include path that is passed to the compiler.

    Please expose and support the language version project setting for this platform and provide the missing C++17 headers to the compiler.

    9 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  20. Wide character string versions of predefined macros.

    Generate wide character string versions of predefined macros. Having only the outdated char versions is really pathetic .

    https://msdn.microsoft.com/en-us/library/b0084kay.aspx

    _WFILE_
    _WFUNCTION_ ]
    etc..

    9 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →

Feedback and Knowledge Base