Harnessing AI tools for C++ Development
C++
1
Speaker and organizer of C++ conferences
A leader in C++ standardization committee
Israeli NB Chair, LEWG Chair
2
Developing and deploying AI tools for C++ Engineers at Microsoft
3
* Optinions are my own
https://hai.stanford.edu/ai-index/2025-ai-index-report
4
Hugging Face
PyTorch
TensorFlow
Claude
Github Copilot
OpenAI
Anthropic
ChatGPT
5
Cursor
VSCode
Agents:
Autonomous for specialized tasks.
Development Tools:
IDEs and code reviews (e.g., GitHub Copilot).
Chats:
Brainstorming, research, and open discussion.
6
class Student {
	std::string name;
    uint32_t id;
    std::vector<uint8_t> classes;
};...
class Student {
	std::string name;
    uint32_t id;
    std::vector<uint8_t> classes;
};Generate a "student" class with: id, name, grade
student.hpp
7
8
9
10
"Need more context"
Here are 5 options:
...
Add logging to my code
How to add logging to C++ code?
C++ project
No logger
11
12
1
35
23
4
Add logging to my code
Here are 5 options:
...
18
27
CppCon 2025 Keynote (Daisy Hollman): crafting-the-code-you-dont-write
13
14
15
16
17
activeContext.md
productContext.md
progress.md
projectbrief.md
systemPatterns.md
techContext.md
18
19
Add logging to my code
I see an MCP server: logging_mcp_server
calling: list_logging_steps
"read all the resources"...
Stage 1: Create Logging Utility
Stage 2: Identify Logging Points
Stage 3: Implement Logging
Stage 4: Summary
20
21
22
23
<task>
Can you add logging to my code?
</task>
# Todo List (Optional - Plan Mode)
While in PLAN MODE, if you've outlined concrete steps or requirements for the user, you may include a preliminary todo list using the task_progress parameter.
Reminder on how to use the task_progress parameter
1. To create or update a todo list, include the task_progress parameter in the next tool call
2. Review each item and update its status:
   - Mark completed items with: - [x]
   - Keep incomplete items as: - [ ]
   - Add new items if you discover additional steps
3. Modify the list as needed:
- Add any new steps you've discovered
- Reorder if the sequence has changed
4. Ensure the list accurately reflects the current state
**Remember:** Keeping the todo list updated helps track progress and ensures nothing is missed.
<environment_details>
# Visual Studio Code Visible Files
memory-bank/techContext.md
# Visual Studio Code Open Tabs
memory-bank/techContext.md
# Current Time
...
# Current Working Directory (/home/inbal/AI/ExampleProjects/ex_proj_1) Files
...
doc/
include/
include/student.hpp
lib/
memory-bank/
memory-bank/activeContext.md
memory-bank/productContext.md
memory-bank/progress.md
memory-bank/projectbrief.md
memory-bank/systemPatterns.md
memory-bank/techContext.md
src/
src/app/
src/app/main.cpp
src/core/
src/core/student.cpp
src/utils/
tests/
# Workspace Configuration
{
  "workspaces": {
    "/home/inbal/AI/ExampleProjects/ex_proj_1": {
      "hint": "ex_proj_1"
    }
  }
}
# Detected CLI Tools
These are some of the tools on the user's machine, and may be useful if needed to accomplish the task: git, npm, pip, curl, make, cmake, node, code, grep, sed, awk, apt, wget. This list is not exhaustive, and other tools may be available.
# Context Window Usage
0 / 128K tokens used (0%)
# Current Mode
PLAN MODE
In this mode you should focus on information gathering, asking questions, and architecting a solution. Once you have a plan, use the plan_mode_respond tool to engage in a conversational back and forth with the user. Do not use the plan_mode_respond tool until you've gathered all the information you need e.g. with read_file or ask_followup_question.
(Remember: If it seems the user wants you to use tools only available in Act Mode, you should ask the user to "toggle to Act mode" (use those words) - they will have to manually do this themselves with the Plan/Act toggle button below. You do not have the ability to switch to Act Mode yourself, and must wait for the user to do it themselves once they are satisfied with the plan. You also cannot present an option to toggle to Act mode, as this will be something you need to direct the user to do manually themselves.)
</environment_details>24
25
Automated
UI
focused
Immutable
Context
Configurable
26
27
28
Generate "MyTypeSerializer" class in a header (you can add .cpp file if needed), based on "MyType.h" which provide "serialize" and "deserialize" methods for "MyType", turning it into bytes buffer and back into a "MyType" class.
* From: Welcome to v1.0 of meta::[[verse]]! (C++ 26 Reflection)
29
* From: Welcome to v1.0 of meta::[[verse]]! (C++ 26 Reflection)
30
* From: Welcome to v1.0 of meta::[[verse]]! (C++ 26 Reflection)
31
* From: Welcome to v1.0 of meta::[[verse]]! (C++ 26 Reflection)
32
AI
Auto-
mation
Increase Automation:
UI
focused
Inconsistent
Automated
Stage I: Capture project-specific knowledge in writing
33
Stage II: Feed the knowledge to your framework
34
Stage III: Iterative improvment on the go
35
Stage IV: Don't be afraid to Mix and Match
36
Experiment!
Inbal Levi
inballevi@microsoft.com
sinbal2lextra@gmail.com
linkedin/inballevi
Stay in touch!
Open positions!