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
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      Signed in as (Sign out)
      You have left! (?) (thinking…)
      1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
    • 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
      Check!
      (thinking…)
      Reset
      or sign in with
      • facebook
      • google
        Password icon
        Signed in as (Sign out)
        You have left! (?) (thinking…)
        0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
      • 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
        Check!
        (thinking…)
        Reset
        or sign in with
        • facebook
        • google
          Password icon
          Signed in as (Sign out)
          You have left! (?) (thinking…)
          1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
        • 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
          Check!
          (thinking…)
          Reset
          or sign in with
          • facebook
          • google
            Password icon
            Signed in as (Sign out)
            You have left! (?) (thinking…)
            0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
          • 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
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              Signed in as (Sign out)
              You have left! (?) (thinking…)
              1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
            • 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
              Check!
              (thinking…)
              Reset
              or sign in with
              • facebook
              • google
                Password icon
                Signed in as (Sign out)
                You have left! (?) (thinking…)
                3 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
              • 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
                Check!
                (thinking…)
                Reset
                or sign in with
                • facebook
                • google
                  Password icon
                  Signed in as (Sign out)
                  You have left! (?) (thinking…)
                  0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                • 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
                  Check!
                  (thinking…)
                  Reset
                  or sign in with
                  • facebook
                  • google
                    Password icon
                    Signed in as (Sign out)
                    You have left! (?) (thinking…)
                    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                  • 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
                    Check!
                    (thinking…)
                    Reset
                    or sign in with
                    • facebook
                    • google
                      Password icon
                      Signed in as (Sign out)
                      You have left! (?) (thinking…)
                      2 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                    • 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
                      Check!
                      (thinking…)
                      Reset
                      or sign in with
                      • facebook
                      • google
                        Password icon
                        Signed in as (Sign out)
                        You have left! (?) (thinking…)
                        1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                      • 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
                        Check!
                        (thinking…)
                        Reset
                        or sign in with
                        • facebook
                        • google
                          Password icon
                          Signed in as (Sign out)
                          You have left! (?) (thinking…)
                          0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                        • 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
                          Check!
                          (thinking…)
                          Reset
                          or sign in with
                          • facebook
                          • google
                            Password icon
                            Signed in as (Sign out)
                            You have left! (?) (thinking…)
                            0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                          • 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
                            Check!
                            (thinking…)
                            Reset
                            or sign in with
                            • facebook
                            • google
                              Password icon
                              Signed in as (Sign out)
                              You have left! (?) (thinking…)
                              0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                            • 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
                              Check!
                              (thinking…)
                              Reset
                              or sign in with
                              • facebook
                              • google
                                Password icon
                                Signed in as (Sign out)
                                You have left! (?) (thinking…)
                                0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                              • 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
                                Check!
                                (thinking…)
                                Reset
                                or sign in with
                                • facebook
                                • google
                                  Password icon
                                  Signed in as (Sign out)
                                  You have left! (?) (thinking…)
                                  0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                • 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
                                  Check!
                                  (thinking…)
                                  Reset
                                  or sign in with
                                  • facebook
                                  • google
                                    Password icon
                                    Signed in as (Sign out)
                                    You have left! (?) (thinking…)
                                    1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                  • 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
                                    Check!
                                    (thinking…)
                                    Reset
                                    or sign in with
                                    • facebook
                                    • google
                                      Password icon
                                      Signed in as (Sign out)
                                      You have left! (?) (thinking…)
                                      0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                    • 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
                                      Check!
                                      (thinking…)
                                      Reset
                                      or sign in with
                                      • facebook
                                      • google
                                        Password icon
                                        Signed in as (Sign out)
                                        You have left! (?) (thinking…)
                                        1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                      • 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
                                        Check!
                                        (thinking…)
                                        Reset
                                        or sign in with
                                        • facebook
                                        • google
                                          Password icon
                                          Signed in as (Sign out)
                                          You have left! (?) (thinking…)
                                          1 comment  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →
                                        • 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
                                          Check!
                                          (thinking…)
                                          Reset
                                          or sign in with
                                          • facebook
                                          • google
                                            Password icon
                                            Signed in as (Sign out)
                                            You have left! (?) (thinking…)
                                            0 comments  ·  Languages - C++  ·  Flag idea as inappropriate…  ·  Admin →

                                          Feedback and Knowledge Base