Visual Studio IDE

Announcement: This forum has been migrated to provide our customers one convenient and responsive system for all feedback. You can now suggest new ideas, browse and vote on existing ideas in the Visual Studio Developer Community. To learn more about the migration to Visual Studio Developer Community please check out the release blog post.

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. 17 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  2. Implement statement expression GCC extension

    In C and C++, please implement statement expression GCC extension.

    A compound statement enclosed in parentheses may appear as an expression in GNU C. This allows you to use loops, switches, and local variables within an expression.

    The last thing in the compound statement should be an expression followed by a semicolon; the value of this subexpression serves as the value of the entire construct. (If you use some other kind of statement last within the braces, the construct has type void, and thus effectively no value.)

    https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html

    17 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  3. Add a ccache-like mechanism for native builds (c/c++)

    Original ccache: https://ccache.samba.org/
    Private initiative (a good start but not working correctly with all projects): https://github.com/frerich/clcache

    17 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  4. Please Bring C++ Windows Forms Back

    There used to be an option to make a Windows Form Application using the c++ language in the 2010 edition but I have the 2013 edition and it is no longer there. Please can you bring back the Windows Forms Application option. I prefer Windows Forms Applications to Win 32 Applications.

    17 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  5. Support devirtualization at least some of virtual calls

    Support full devirtualization for types declared in an anonymous namespace, in local scope or when used the final specifier. Also, warnings similar GCC -Wsuggest-final-types and -Wsuggest-final-methods.

    http://hubicka.blogspot.ca/2014/08/devirtualization-in-c-part-5-asking.html

    16 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  6. Distributed compilation

    Able to distrubute compilation to more computers. Master computer will make pre-procesing and all others will just make raw C++ compilation. The best would be if the client computers will not require full Visual studio licence.

    16 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  7. Add bracket completion and highlighting for C++ templates

    When writing templates in C++ it can be quite messy at times to match all the left angle brackets( < ) with the right angle brackets( > ).

    I'll paste here a couple of examples:

    template <typename Component>
    static constexpr auto indexOf()
    {
    return Index<Cache<std::decay_t<Component>, N>, decltype( components_ )>::value;
    }

    template <typename U = SocketType, typename = std::enable_if_t<e_std::is_same_v<U, SslSocket>>>
    BasicClient(....

    When you write code like this, highlighting and/or completion for brackets like the one already available for parenthesis and curly braces would be a really good help

    Thanks!

    16 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  8. Default to C++latest

    > fatal error C1189: #error: string_view is only available with C++17.

    This is just annoying, especially in new projects. Could you
    1. Default to C++latest for new projects
    2. Default to C++latest for all projects

    It's trivial to set C++14 on existing projects that somehow don't support C++latest.

    16 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  9. Add C++ template instantiation tracing to Visual Studio

    Along the lines of Templight and Templight tools.

    Or at least the possibility to define a #pragma message showing the template arguments with which the compiler instantiates a template

    16 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  10. Parameterized configurations for VC++ projects/solutions

    When building VC++ project/solution for several toolsets currently we create many configurations, like: v110_Debug, v110_DebugMT, v110_Debug_DynamicBoost, v110_Debug_StaticBoost, v110_ReleaseMT, v110_Release_StaticBoost, v110_Release_DynamicBoost,
    v120_Debug, v120_DebugMT, v120_Debug_DynamicBoost, v120_Debug_StaticBoost, v120_ReleaseMT, v120_Release_StaticBoost, v120_Release_DynamicBoost etc.

    It is a poorly scalable solution, please provide the ability to specify a configuration parameter, or an alternative solution for that issue

    15 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  11. Support typedefs and primitive types in VS Natvis

    It would extremely helpful to be able to write custom natvis defintions for typedefs.

    For example, we have
    typedef unsigned short entity;

    And we want to display specific debug data for entities even though they're just regular u16.

    As an alternative/complement, it'd be nice to be able to add a natvis for just "unsigned short", as we could then do a natvis-view for it. Not quite as nice but still useful.

    15 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  12. Allow deprecated attribute to be used with Treat Warnings As Errors

    This suggestion is migrated to Developer Community. Please use below link to view the current status.
    https://developercommunity.visualstudio.com/content/idea/351665/allow-deprecated-attribute-to-be-used-with-treat-w.html
    Currently, one can not use [[deprecated]] with /WX (Treat Warnings As Errors), without causing a compilation error due to the warning generated by the deprecated attribute.

    As code bases get larger and change over time, it's important to be able to give visibility to deprecated code use while maintaining warnings as errors without it resulting in a compilation error.

    Clang provides similar functionality with the -Wn-error=foo command-line switch.

    It would be nice if we could either:
    * Promote ALL warnings to errors, except…

    15 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  13. publish telemetry.cpp and telemetrydefault.cpp

    There is a story floating around the internet about how microsoft is "secretly" inserting telemetry "spyware" into compiled Visual C++ applications via the functions telemetry_main_invoke_trigger and telemetry_main_return_trigger.
    These functions are declared in vcruntime_internal.h (in the CRT source) which says the implementation is in telemetry.cpp and telemetrydefault.cpp. Microsoft should publish the source code for this stuff in the CRT source so people can see it isn't "spyware" and can see what it really does.

    15 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  14. Add the ability to add a space before/after a negating exclamation mark.

    I've noticed an increase in popularity of developers who add a space before, after, or on both sides of a negating exclamation mark. It'd be nice to see this supported.

    example (current):
    if (!SomeCondition || !SomeOtherContition)

    suggestion (before/after spaces):
    if ( ! SomeCondition || ! SomeOtherCondition)

    suggestion (after spaces):
    if (! SomeCondition || ! SomeOtherCondition)

    suggestion (before spaces): if ( !SomeCondition || !SomeOtherCondition)

    14 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  15. Allow recursively-added linked files to be put in to a filter within the solution explorer

    When adding linked files recursively using the following in the project file:

    <ItemGroup>
    <ClCompile Include="..\..\..\source\*.cpp">
    <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
    </ClCompile>
    </ItemGroup>

    all items get added to the root of the solution explorer. I would like to be able to put files in subfolders in to a specific filter inside the solution explorer, so for instance a subfolder in "source\android" would go in to an android filter. This would allow new files to be added automatically whilst keeping everything neatly inside filters, rather than everything inside the root.

    Here is a related post:

    https://social.msdn.microsoft.com/Forums/vstudio/en-US/ead289f4-f873-41ad-b584-5dda58ec9240/putting-recursivelyadded-files-in-to-a-filter?forum=visualstudiogeneral

    14 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  16. Ignore unreferenced local variable structured bindings

    When using stuctured bindings, it isn't uncommon, especially with maps, to not use one or more of the variables. This causes a C4101: "unreference local variable" warning, rendering stuctured bindings all but useless.

    I suggest either adding an option to ignore "unreferenced local variable" for structured bindings where an element is not used or get the C++ committee to allow elements of a structured binding to be ignored.

    14 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  17. lambda body indentation

    Visual Studio doesn't indent lambda bodies very well. I attached an example of what VS does versus what I would like to see (either via a formatting option, or by default). It seems strange that VS un-indents the lambda body by one level instead of keeping the same indentation level as its declaration.

    14 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  18. Implement -openmp-simd to guide vectorization

    While other OpenMP 3+ require runtime support it should be less effort to support the SIMD subset of OpenMP to guide vectorization.

    Afaik gcc, clang and icc all support an -fopenmp-simd option to do just this, often reusing existing compiler-specifis like https://llvm.org/docs/Vectorizers.html#pragma-loop-hint-directives.

    See https://gcc.gnu.org/ml/gcc-patches/2013-10/msg02275.html

    13 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  19. integrate vcpkg into IDE

    You should, and maybe must, integrate the vcpkg into visual studio.
    I really love it.
    So, please integrate it into the IDE.

    13 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
  20. to add 2013 c++ toolset v120.

    It will be pretty helpful for us to install VS2017 only (w/o VS2013 for toolset v120). Toolset should be downloadable only even inside iso as 2015 toolset to, to keep smaller iso size. Only default toolset must be inside iso.

    13 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →

Feedback and Knowledge Base