{"id":35839,"date":"2025-10-31T15:37:49","date_gmt":"2025-10-31T15:37:49","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=35839"},"modified":"2025-11-07T21:48:05","modified_gmt":"2025-11-07T21:48:05","slug":"cppcon2025-trip-report","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/cppcon2025-trip-report\/","title":{"rendered":"Microsoft C++ Team at CppCon 2025: Trip Report"},"content":{"rendered":"<p>Another year and another CppCon is all wrapped up! Microsoft was pleased to once again be an exhibitor and to have several of our employees present sessions at the conference. Here are my major takeaways from the keynotes, sessions, conversations, and the general vibe.<\/p>\n<ul>\n<li>AI tooling is finding a footing with the C++ community. The next year is going to see the reliability and usefulness of those tools jump drastically.<\/li>\n<li>Visual Studio users consistently name the debugger as one of the best features of the product.<\/li>\n<li>Lots of folks are getting excited about the static reflection capabilities in C++26.<\/li>\n<\/ul>\n<p>The week before CppCon, we announced Visual Studio 2026 and Microsoft C++ (MSVC) Build Tools v14.50, and the conference gave us a great opportunity to let you know what you can expect in the new release and for you to give us your feedback. We highly encourage you to <a href=\"https:\/\/aka.ms\/vs\/insiders\">try out the Insiders release<\/a> and let us know what your experience is like.<\/p>\n<p>This is a long post, so here\u2019s a table of contents to help you navigate if you are only interested in specific parts:<\/p>\n<ol>\n<li><a href=\"#the-microsoft-booth\">The Microsoft Booth<\/a><\/li>\n<li><a href=\"#keynotes\">Keynotes<\/a><\/li>\n<li><a href=\"#microsoft-sessions\">Microsoft Sessions<\/a><\/li>\n<li><a href=\"#other-sessions-of-interest\">Other Sessions of Interest<\/a><\/li>\n<li><a href=\"#wrapping-it-up\">Wrapping It Up<\/a><\/li>\n<\/ol>\n<p>Now, let\u2019s get into some of the details from the conference.<\/p>\n<h2>The Microsoft Booth<\/h2>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35842\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Booth1.jpg\" alt=\"Microsoft booth staff, speakers, and attendees\" width=\"508\" height=\"308\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Booth1.jpg 760w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Booth1-300x182.jpg 300w\" sizes=\"(max-width: 508px) 100vw, 508px\" \/>\u00a0 \u00a0 \u00a0<img decoding=\"async\" class=\"alignnone wp-image-35844\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Booth2.png\" alt=\"Microsoft booth staff, speakers, and attendees\" width=\"403\" height=\"306\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Booth2.png 529w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Booth2-300x228.png 300w\" sizes=\"(max-width: 403px) 100vw, 403px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Conference attendees often describe the \u201challway track&#8221; as a hidden gem of in-person attendance, and as a tool vendor, the exhibition hall serves a similar function: providing a way to broadly understand what the community and our users are looking for from our products. We really do value your feedback, and we appreciate everyone who came by to talk to us or to fill out our feedback survey. We even managed to get in a couple of deeper, private, in-person conversations with users to really dig into what they want from their tools.<\/p>\n<h3>Survey<\/h3>\n<p>The survey we conducted ended up with over 170 unique entries, and from those entries, we randomly selected raffle winners for some great LEGO\u00ae prizes. Congratulations to the winner!<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/2025_Raffle_Winner_1.png\"><img decoding=\"async\" class=\"alignnone wp-image-35848\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/2025_Raffle_Winner_1.png\" alt=\"A CppCon attendee holding a LEGO prize\" width=\"160\" height=\"257\" \/><\/a> \u00a0 \u00a0<img decoding=\"async\" class=\"alignnone wp-image-35849\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/2025_Raffle_Winner_2.png\" alt=\"A CppCon attendee holding a LEGO prize\" width=\"226\" height=\"256\" \/>\u00a0 \u00a0 <img decoding=\"async\" class=\"alignnone wp-image-35850\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/2025_Raffle_Winner_3.png\" alt=\"A CppCon attendee holding a LEGO prize\" width=\"244\" height=\"255\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/2025_Raffle_Winner_3.png 232w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/2025_Raffle_Winner_3-24x24.png 24w\" sizes=\"(max-width: 244px) 100vw, 244px\" \/><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35851\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/2025_Raffle_Winner_4.png\" alt=\"A CppCon attendee holding a LEGO prize next to Microsoft booth staff\" width=\"659\" height=\"479\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/2025_Raffle_Winner_4.png 612w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/2025_Raffle_Winner_4-300x218.png 300w\" sizes=\"(max-width: 659px) 100vw, 659px\" \/><\/p>\n<h2>Keynotes<\/h2>\n<h3><strong>Concept-Based Generic Programming &#8211; <\/strong><em>Bjarne Stroustrup<\/em><\/h3>\n<p><iframe title=\"YouTube video player\" src=\"\/\/www.youtube.com\/embed\/VMGB75hsDQo?si=1PQivIqPgdmw8cpX\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>Bjarne\u2019s keynote on generic programming with C++ concepts was focused on showing how concepts, which were added in C++20, are one tool in the toolbox for writing code that can reinforce safety and encapsulate differences between types so that code can be written in a way that it doesn\u2019t have to repeatedly handle all the special cases.<\/p>\n<p>I was particularly fond of the idea of using values as concept parameters to encode into the type system certain expectations about a type, such as maximum object size, which is important in many serialization, caching, and performance optimization scenarios. It\u2019s a much better solution than my existing preference of using <span style=\"font-family: consolas;\">static_assert<\/span> to check object size directly after the type declaration.<\/p>\n<h3><strong>Crafting The Code You Don\u2019t Write: Sculpting Software in an AI World &#8211; <\/strong><em>Daisy Hollman<\/em><\/h3>\n<p><iframe title=\"YouTube video player\" src=\"\/\/www.youtube.com\/embed\/v6OyVjQpjjc?si=3abnOkMkptnsMfrL\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>I didn\u2019t get a chance to see Daisy\u2019s talk live at the conference, but I caught it on the <a href=\"https:\/\/cppcon.programmingarchive.com\/\">CppCon Video Archive<\/a> afterwards. Daisy gives a great talk as usual, balancing sharp technical insight and examples that make them relevant to the viewers\u2019 everyday problems. In this case, it was about understanding LLMs and how they work so that you might understand why they give the sorts of completions that they give based on your prompt. Ultimately, they respond to our prompts and the context we provide, and each model will respond differently.<\/p>\n<p>One of my favorite things from the talk was the idea that you should think of LLM-based AI assistants \u201clike junior engineers who have read the whole internet.\u201d This is very similar to my description from my Meeting C++ 2023 talk <a href=\"https:\/\/www.youtube.com\/watch?v=BkyrQgjJVAo\">AI Assistants for C++ Developers<\/a> \u201cas a very eager, over-confident beginner with access to an enormous library and the skills to quickly find and collate information.\u201d Of course, Daisy puts it much more succinctly.<\/p>\n<h3><strong>Reflection: C++\u2019s Decade-Defining Rocket Engine &#8211; <\/strong><em>Herb Sutter<\/em><\/h3>\n<p><iframe title=\"YouTube video player\" src=\"\/\/www.youtube.com\/embed\/7z9NNrRDHQU?si=WqVbDMLlf1DFZ5iK\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>I haven\u2019t gotten around to watching Herb\u2019s talk, but I\u2019m looking forward to it soon. Let us know in the comments what you think about it if you were there or after you\u2019ve watched it on YouTube!<\/p>\n<h3><strong>More Speed &amp; Simplicity: Practical Data-Oriented Design in C++ &#8211; <\/strong><em>Vittorio Romeo<\/em><\/h3>\n<p><iframe title=\"YouTube video player\" src=\"\/\/www.youtube.com\/embed\/SzjJfKHygaQ?si=9XW1roYxFTkfx64h\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>Like with Herb\u2019s talk, I haven\u2019t gotten a chance to watch Vittorio\u2019s keynote. I\u2019m a pretty big fan of data-oriented design so I\u2019m interested in what Vittorio has to say about it. Let us know what you think of his talk in the comments!<\/p>\n<h3><strong>C++: Some Assembly Required &#8211; <\/strong><em>Matt Godbolt<\/em><\/h3>\n<p><iframe title=\"YouTube video player\" src=\"\/\/www.youtube.com\/embed\/zoYT7R94S3c?si=pJCoqW4vTVlGIfwu\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>Matt\u2019s closing keynote session was wide-ranging and quite good, as usual. He walked through the different dictionary definitions of assembly and how they applied to C++ and the C++ community, often in surprisingly meaningful ways. Of course, he\u2019s most well known for Compiler Explorer, which lets you view the generated binary code for your C++ code in a variety of assembly language syntaxes. There was content on technical topics like that, but also some rather inspiring and thoughtful content on softer topics as well. Highly recommended viewing.<\/p>\n<h2>Microsoft Sessions<\/h2>\n<h3>What\u2019s New in Visual Studio for C++ Developers in 2025 &#8211; <em>David Li and Augustin Popa<\/em><\/h3>\n<p>&nbsp;<\/p>\n<p><iframe title=\"YouTube video player\" src=\"\/\/www.youtube.com\/embed\/G0ptIEX0y5c?si=SNRmehgyzbmhcpMG\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>In this talk, Augustin and David go into a lot more detail of the changes that are coming in the new versions of Visual Studio and the MSVC Build Tools. Here are some of the highlights:<\/p>\n<ul>\n<li><a href=\"https:\/\/learn.microsoft.com\/visualstudio\/ide\/copilot-agent-mode\"><strong>GitHub Copilot Agent Mode<\/strong><\/a> is now available in Visual Studio. Agents can better understand intent, plan actions, and carry out tasks with less user guidance. You can provide further context to GitHub Copilot by using a custom instructions file to let it know about the preferred conventions and rules for your repo or organization, like how to add unit tests, what style you prefer for comments, and what your priorities are in terms of the quality of your code.<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35907\" role=\"img\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/VS_talk_slide_1-1.svg\" alt=\"A PowerPoint slide describing GitHub Copilot improvements\" width=\"772\" height=\"434\" \/><\/p>\n<ul>\n<li>One of our biggest features this year is <a href=\"https:\/\/aka.ms\/dynamicdebugging\"><strong>Dynamic Debugging<\/strong><\/a>, which allows you to deoptimize code on the fly while debugging, making the debugger more useful for projects that are performance sensitive. You will be able to see all your local variables, step reliably, and step into force inline functions. While this feature was inspired by our game dev partners, it is useful for all C++ applications that use debug and release configurations.<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35908\" role=\"img\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/VS_talk_slide_2-1.svg\" alt=\"A PowerPoint slide quoting a user of C++ Dynamic Debugging, describing it as 'exceptional'.\" width=\"774\" height=\"435\" \/><\/p>\n<ul>\n<li>For the <strong>MSVC Build Tools<\/strong>, we continue our progress towards C++23 conformance with support for formatting ranges, <span style=\"font-family: consolas;\">std::generator<\/span>, lambda attributes, and more. We also continued to improve the runtime performance of code built with the latest build tools.<\/li>\n<li>We fixed <strong>387 C++ issues<\/strong> and implemented <strong>29 C++ feature requests<\/strong> in the past year.<\/li>\n<li>There are many <strong>UI improvements<\/strong> in Visual Studio 2026, including 11 colorful themes to choose from, an updated Settings experience, and a dockable all-in-one search window.<\/li>\n<li><strong>Other productivity improvements<\/strong> include automatic word wrap indentation, enhanced line and column navigation, a better Change Signature experience, and the ability to save files with your preferred encoding format.<\/li>\n<\/ul>\n<h3><strong>What\u2019s New for Visual Studio Code: CMake Improvements and GitHub Copilot Agents &#8211; <\/strong><em>Alexandra Kemper<\/em><\/h3>\n<p>&nbsp;<\/p>\n<p><iframe title=\"YouTube video player\" src=\"\/\/www.youtube.com\/embed\/cJNp3IhUCIM?si=h_U4qqyPl8vADvu2\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>This session highlighted several important improvements and new features, covering extensions like the C\/C++ extension, the CMake Tools extension, and GitHub Copilot extension.<\/p>\n<p>Performance is one of the major areas of feedback received for the C\/C++ extension, and the latest versions have changes that significantly speed up project startup times and reduce the time for source to be parsed and colorized in the editor. Benchmarks show up to 4x faster colorization for large codebases.<\/p>\n<p>The CMake Tools extension now supports version 10 of CMake Presets which adds features like adding comments in the JSON presets files via the <span style=\"font-family: consolas;\">&#8220;$comment&#8221;<\/span> field and additional support for generating a project dependency graph with Graphviz. By popular demand, the CMake Tools extension now has full language service protocol (LSP) support for CMake, as well as the option to exclude specific CMake folders from the project view for easier code navigation.<\/p>\n<p>GitHub Copilot support in Visual Studio Code is also improving rapidly, with various AI agents available to users today. Visual Studio Code also has <a href=\"https:\/\/code.visualstudio.com\/docs\/copilot\/customization\/mcp-servers\">great support for the Model Context Protocol (MCP)<\/a> that enables the creation of tools to perform specific actions and exposes those tools to agents. Beyond the agent improvements, Visual Studio Code has also been making GitHub Copilot completions more context-aware and tailored to common C++ coding patterns, and next edit suggestions (NES) can predict the next expected change based on your previous changes and the coding patterns, making changes that span many lines in your codebase much easier.<\/p>\n<p>All features covered in the talk are already publicly available; try them out today and let us know what you think!<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35909\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/VSCode_talk_slide_1-1.webp\" alt=\"A PowerPoint slide describing improvements to GitHub Copilot for C++ users in Visual Studio Code\" width=\"781\" height=\"347\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/VSCode_talk_slide_1-1.webp 1656w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/VSCode_talk_slide_1-1-300x133.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/VSCode_talk_slide_1-1-1024x455.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/VSCode_talk_slide_1-1-768x341.webp 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/VSCode_talk_slide_1-1-1536x683.webp 1536w\" sizes=\"(max-width: 781px) 100vw, 781px\" \/><\/p>\n<h3><strong>MSVC C++ Dynamic Debugger: How We Enabled Full Debuggability of Optimized Code &#8211; <\/strong><em>Eric Brumer<\/em><\/h3>\n<p><div class=\"alert alert-primary\">Check back later for the session video. We&#8217;ll post it here when it&#8217;s available.<\/div><\/p>\n<p>Eric\u2019s talk covered the use of C++ Dynamic Debugging to effectively debug your optimized code. You don\u2019t have to worry about any more \u2018variable was optimized away\u2019 messages, and taking normal debugger actions like step-over and step-into behaves exactly as you would expect it to. It also covered the underlying technical details which make the feature powerful, easy to use, and fast to build.<\/p>\n<p>Learn more at <a href=\"https:\/\/aka.ms\/vcdd\">https:\/\/aka.ms\/vcdd<\/a> and <a href=\"https:\/\/aka.ms\/dynamicdebugging\">https:\/\/aka.ms\/dynamicdebugging<\/a>.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35910\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingCallstack-1.webp\" alt=\"DynamicDebuggingCallstack image\" width=\"487\" height=\"207\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingCallstack-1.webp 1391w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingCallstack-1-300x127.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingCallstack-1-1024x435.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingCallstack-1-768x326.webp 768w\" sizes=\"(max-width: 487px) 100vw, 487px\" \/> \u00a0 <img decoding=\"async\" class=\"alignnone wp-image-35911\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingAssembly-1.webp\" alt=\"An image of source code, and the corresponding optimized and deoptimized code generated when using C++ Dynamic Debugging\" width=\"378\" height=\"202\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingAssembly-1.webp 1493w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingAssembly-1-300x160.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingAssembly-1-1024x547.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/DynamicDebuggingAssembly-1-768x410.webp 768w\" sizes=\"(max-width: 378px) 100vw, 378px\" \/><\/p>\n<h3><strong>Welcome to v1.0 of the meta::[[verse]]! &#8211; <\/strong><em>I<\/em><em>nbal Levi<\/em><\/h3>\n<p><div class=\"alert alert-primary\">Check back later for the session video. We&#8217;ll post it here when it&#8217;s available.<\/div><\/p>\n<p>The talk introduces the static reflection feature that was voted into the Library Evolution Working Group (LEWG) in the C++ standard committee, which reviewed the design of the library side of the reflection feature. The session introduced reflection and its transformative potential within our codebases. After a brief history and introduction of utilities from the latest reflection proposal, Inbal explored the possibilities for \u201cReflection Libraries\u201d and demonstrated potential directions for future improvements.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35912\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_1-1.webp\" alt=\"An image of a person standing in front of a projection screen showing a slide for a talk on C++ static reflection\" width=\"401\" height=\"311\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_1-1.webp 1391w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_1-1-300x233.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_1-1-1024x796.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_1-1-768x597.webp 768w\" sizes=\"(max-width: 401px) 100vw, 401px\" \/>\u00a0 <img decoding=\"async\" class=\"alignnone wp-image-35913\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_2-1.webp\" alt=\"A slide from a talk showing the topics covered in a C++ static reflection talk\" width=\"447\" height=\"311\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_2-1.webp 1136w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_2-1-300x209.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_2-1-1024x712.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Reflection_2-1-768x534.webp 768w\" sizes=\"(max-width: 447px) 100vw, 447px\" \/><\/p>\n<h3><strong>Connecting C++ Tools to AI Agents Using the Model Context Protocol (MCP) &#8211; <\/strong><em>Ben McMorran<\/em><\/h3>\n<p><div class=\"alert alert-primary\">Check back later for the session video. We&#8217;ll post it here when it&#8217;s available.<\/div><\/p>\n<p>Ben\u2019s talk was all about why the Model Context Protocol (MCP) is needed to address a variety of problems that AI assistants encounter when they want to evolve beyond a simple chat interface. The MCP solves these problems by providing an open and standard way for tools to provide context and actions to AI agents. For me, the most interesting part of the talk was seeing an MCP agent get implemented and seeing just how simple, yet powerful, they can be. They really form a major backbone of a successful agentic AI system.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35914\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/MCP_1-1.webp\" alt=\"An image of a person standing in front of a projector screen showing the title slide for a talk on Model Context Protocol (MCP)\" width=\"718\" height=\"536\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/MCP_1-1.webp 1509w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/MCP_1-1-300x224.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/MCP_1-1-1024x765.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/MCP_1-1-768x574.webp 768w\" sizes=\"(max-width: 718px) 100vw, 718px\" \/><\/p>\n<h3><strong>LLMs in the Trenches: Boosting System Programming with AI &#8211; <\/strong><em>Ion Todirel<\/em><\/h3>\n<p><div class=\"alert alert-primary\">Check back later for the session video. We&#8217;ll post it here when it&#8217;s available.<\/div><\/p>\n<p>Ion\u2019s talk was about practical advice for using AI tools, specifically for embedded and systems programming tasks. The advice offered was based on real-world problems and attempts to solve them using the AI tools that exist today. I\u2019d say that a lot of the points made are relevant to tasks outside of that domain as well, and a key takeaway I had was that <em>if at first your prompt doesn\u2019t succeed, prompt again<\/em>. Eventually, with enough experience (and advice) you\u2019ll improve your prompts to get the most effective results and save you time when using an AI assistant.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35916\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_2-1.webp\" alt=\"An image of a person standing in front of a CppCon talk session placard showing the title of the talk and the speaker name\" width=\"311\" height=\"416\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_2-1.webp 1100w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_2-1-224x300.webp 224w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_2-1-766x1024.webp 766w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_2-1-768x1026.webp 768w\" sizes=\"(max-width: 311px) 100vw, 311px\" \/> \u00a0 \u00a0<img decoding=\"async\" class=\"alignnone wp-image-35915\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_1-1-scaled.webp\" alt=\"An image of a person standing in front of a projection screen showing a slide from their talk on LLMs and systems programming\" width=\"551\" height=\"415\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_1-1-scaled.webp 2500w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_1-1-300x226.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_1-1-1024x771.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_1-1-768x579.webp 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_1-1-1536x1157.webp 1536w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/LLM_1-1-2048x1543.webp 2048w\" sizes=\"(max-width: 551px) 100vw, 551px\" \/><\/p>\n<h3><strong>It\u2019s Dangerous to Go Alone: A Game Developer Tutorial &#8211; <\/strong><em>Michael Price<\/em><\/h3>\n<p><div class=\"alert alert-primary\">Check back later for the session video. We&#8217;ll post it here when it&#8217;s available.<\/div><\/p>\n<p>This was my talk and I had a lot of fun preparing and presenting it. I walk through some of the key things that a C++ developer needs to know to get started with game development, focusing on Blender, Unreal Engine, and Visual Studio 2026. The key takeaway for this talk is that while getting into game development can be intimidating due to unfamiliar tools and techniques, modern tools really lower the barrier. You can make simple 3D game assets in just a few minutes and easily import them into your project, and making your existing C++ code available to Unreal Engine is actually not that hard.<\/p>\n<h3><strong>Duck-Tape Chronicles: Rust\/C++ Interop &#8211; <\/strong><em>Victor Ciura<\/em><\/h3>\n<p><div class=\"alert alert-primary\">Check back later for the session video. We&#8217;ll post it here when it&#8217;s available.<\/div><\/p>\n<p>Hybrid C++\/Rust codebases are quickly becoming more common &#8211; at Microsoft and everywhere in the industry. Having seamless interop between the C++ and Rust components is essential for the success of this symbiosis. There are many challenges in this process, but people found various ways to make things work &#8211; from dealing with ABI compatibility and platform\/toolchain guarantees, to going down to C and FFI, to various techniques and tools for generating glue-code between the two languages. Many of the explored solutions so far by the community fail to deliver on all the needed requirements, swinging the wide range between performant and ergonomic. Victor highlighted all the interop challenges, some of the good solutions out there, and teased out the avenues at the forefront of this pursuit.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35917\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/RustCpp_1-1-scaled.webp\" alt=\"A man standing in between two projector screens showing content for a talk on Rust and C++ interoperability\" width=\"898\" height=\"432\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/RustCpp_1-1-scaled.webp 2500w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/RustCpp_1-1-300x144.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/RustCpp_1-1-1024x493.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/RustCpp_1-1-768x370.webp 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/RustCpp_1-1-1536x739.webp 1536w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/RustCpp_1-1-2048x985.webp 2048w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/p>\n<h3><strong>Building Secure C++ Applications: A Practical End-to-End Approach &#8211; <\/strong><em>Chandranath Bhattacharyya and Bharat Kumar<\/em><\/h3>\n<p><iframe title=\"YouTube video player\" src=\"\/\/www.youtube.com\/embed\/GtYD-AIXBHk?si=gTpLnAhhO_y3a_jr\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>C++ remains a foundational language for high-performance applications, but its lack of inherent memory safety and prevalence of undefined behaviors pose serious challenges. Rewriting the vast corpus of existing C++ code into a memory-safe language isn\u2019t feasible in the short term, especially for large-scale projects like Microsoft Edge, which is built atop Chromium\u2019s predominantly C++ codebase. Fortunately, meaningful safety improvements are possible without a full rewrite. Chandranath and Bharat explore how the Edge team systematically addresses safety across four core dimensions: bounds checking, lifetime management, initialization correctness, and type safety. These efforts are grounded in real-world engineering constraints and aim to reduce exploitable vulnerabilities while preserving performance. They also delve into complementary initiatives targeting thread safety, definition safety, and the mitigation of other undefined behaviors. By combining targeted refactoring, static analysis, and safer abstractions, the Microsoft Edge team is charting a pragmatic path toward more resilient C++ code. The session offers insights into scalable safety strategies that can be adopted across large legacy codebases.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35896\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Secure_Applications_1.webp\" alt=\"Image of two people giving a talk at CppCon\" width=\"592\" height=\"444\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Secure_Applications_1.webp 866w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Secure_Applications_1-300x225.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Secure_Applications_1-768x576.webp 768w\" sizes=\"(max-width: 592px) 100vw, 592px\" \/>\u00a0 \u00a0 <img decoding=\"async\" class=\"alignnone wp-image-35897\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Secure_Applications_2.webp\" alt=\"Image of 2 persons standing at a lectern, giving a talk at CppCon\" width=\"332\" height=\"443\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Secure_Applications_2.webp 493w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/Secure_Applications_2-225x300.webp 225w\" sizes=\"(max-width: 332px) 100vw, 332px\" \/><\/p>\n<h3><strong>Back to Basics: Code Review &#8211; <\/strong><em>Chandranath Bhattacharyya and Kathleen Baker<\/em><\/h3>\n<p><div class=\"alert alert-primary\">Check back later for the session video. We&#8217;ll post it here when it&#8217;s available.<\/div><\/p>\n<p>In this talk Chandranath and Kathleen examined examples of common C++ coding mistakes the Microsoft Edge team has come across when reviewing code and shared practical strategies to avoid them. They explored best practices for variable scoping, iteration, function and class design, and useful STL functions and algorithms. The talk also provided clang-tidy checks and warnings to use to catch these common issues.<\/p>\n<h3><strong>C++ Performance Tips: Cutting Down on Unnecessary Objects &#8211; <em>P<\/em><\/strong><em>rithvi Okade and Kathleen Baker<\/em><\/h3>\n<p><div class=\"alert alert-primary\">Check back later for the session video. We&#8217;ll post it here when it&#8217;s available.<\/div><\/p>\n<p>Prithvi and Kathleen\u2019s session focused on techniques to prevent copying or moving objects in favor of in-place construction. It included many code examples with clang-tidy checks and warnings you can use to point out the potential areas of improvement in your own code. They highlighted guidelines such as passing non-trivial objects by reference, using view types, leveraging in-place constructors, best practices for containers like using emplace and transparent comparators, and finally eliminating runtime cost by moving computation to compile time.<\/p>\n<h3><strong>Reflection-based JSON in C++ at Gigabytes per Second &#8211; <\/strong><em>Daniel Lemire (Universit\u00e9 du Qu\u00e9bec) and Francisco Geiman Thiesen (Microsoft)<\/em><\/h3>\n<p><div class=\"alert alert-primary\">Check back later for the session video. We&#8217;ll post it here when it&#8217;s available.<\/div><\/p>\n<p>It is fair to say that reflection was one of the latest additions to the library that has attracted the most attention and it was a subject discussed in many of the talks in this edition of CppCon.<\/p>\n<p>In this talk Daniel and Francisco discussed their experience integrating the latest C++26 reflection proposal into the open source\u00a0<a href=\"https:\/\/github.com\/simdjson\/simdjson\">simdjson<\/a>\u00a0library. A few interesting takeaways from the talk:<\/p>\n<ul>\n<li>Reflection allows the user to deserialize\/serialize their types without having to write any boilerplate code; something that previously took a LOT of boilerplate.<\/li>\n<li>You can get best-in-class performance by using reflection together with several optimizations, even when extending a library that was designed only with deserialization in mind.<\/li>\n<li>For now this is an experimental feature already available in the library. It should gain more traction whenever the latest reflection proposal is added to MSVC, GCC, and<\/li>\n<li>Handling JSON is a poster-child use case for reflection and they went above and beyond to integrate that into the simdjson library, while still following its design principles and guaranteeing the absolute best performance.<\/li>\n<\/ul>\n<p>Slides are publicly available in:\u00a0<a href=\"https:\/\/simdjson.github.io\/simdjson_talks\/cppcon2025\/cppcon_2025_slides.html\">C++26 Reflection for JSON Serialization &#8211; A Practical Journey<\/a><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-35918\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/SimdJSON-1.webp\" alt=\"Image of two people standing at a lectern giving a CppCon talk\" width=\"156\" height=\"335\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/SimdJSON-1.webp 707w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/SimdJSON-1-140x300.webp 140w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2025\/10\/SimdJSON-1-477x1024.webp 477w\" sizes=\"(max-width: 156px) 100vw, 156px\" \/><\/p>\n<h2>Other Sessions of Interest<\/h2>\n<p>In addition to the keynotes and our own Microsoft sessions, here are some sessions I managed to catch during my very busy week that I thought were interesting.<\/p>\n<h3><strong>Panel: What We Learned About AI Tools For C++ Engineers &#8211; <\/strong><em>Guy Davidson, Daisy Hollman, Inbal Levi, Jason Turner, Matt Godbolt, Michael Wong<\/em><\/h3>\n<p>The conference hosted a panel on the topic of AI for C++ Engineers, on which senior members of the C++ training, tooling, and authoring community offered their experience of using these tools, how they have improved their workflow, where the shortcomings are, and what the ideal future will hold. They are also keen to hear the experiences of other engineers who have experimented with AI tools.<\/p>\n<h3><strong>Committee Fireside Chat &#8211; <\/strong><em>Herb Sutter, Jeff Garland, Andrei Alexandrescu, Bjarne Stroustrup, Gabriel Dos Reis, Inbal Levi, Guy Davidson, Timur Doumler, Barry Revzin, Nina Ranns, Khalil Estell, Vittorio Romeo, Ruslan Arutyunyan, Daisy Hollman<\/em><\/h3>\n<p>If you\u2019d like to learn more about C++26\u2019s additions of static reflection, async model (<span style=\"font-family: consolas;\">std::execution<\/span>), contracts, and significant safety improvements, this is the session for you.<\/p>\n<h2>Wrapping It Up<\/h2>\n<p>Congrats, you made it to the end! Thanks for reading through all the way. Be sure to come back and check out the <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\">Microsoft C++ blog<\/a> (this one!) over the coming weeks as we make new announcements for Visual Studio 2026 and all of our other C++ products, and we hope to see you all next September in Aurora!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Another year and another CppCon is all wrapped up! Microsoft was pleased to once again be an exhibitor and to have several of our employees present sessions at the conference. Here are my major takeaways from the keynotes, sessions, conversations, and the general vibe. AI tooling is finding a footing with the C++ community. The [&hellip;]<\/p>\n","protected":false},"author":85414,"featured_media":35754,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,266,3940,3949,3927,2063,275],"tags":[],"class_list":["post-35839","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","category-cmake","category-copilot","category-copilot-2","category-game-development","category-trip-report","category-visual-studio-code"],"acf":[],"blog_post_summary":"<p>Another year and another CppCon is all wrapped up! Microsoft was pleased to once again be an exhibitor and to have several of our employees present sessions at the conference. Here are my major takeaways from the keynotes, sessions, conversations, and the general vibe. AI tooling is finding a footing with the C++ community. The [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/35839","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/85414"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=35839"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/35839\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35754"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=35839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=35839"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=35839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}