Code Smarter

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

Nice to meet you!
I'm Inbal Levi

2

Developing and deploying AI tools for C++ Engineers at Microsoft

Nice to meet you!
I'm Inbal Levi

3

* Optinions are my own

  • 78% of organizations use AI in at least one function
  • Today's Market: ~$0.25T
  • Expected Market: $3.3T by 2033 (2-4% of world economy)

https://hai.stanford.edu/ai-index/2025-ai-index-report

AI Usage in the Industry

4

AI World

Hugging Face

PyTorch

TensorFlow

Claude

Github Copilot

OpenAI

Anthropic

ChatGPT

5

Cursor

VSCode

Three Types of AI Interfaces

Agents:
Autonomous for specialized tasks.

Development Tools:
IDEs and code reviews (e.g., GitHub Copilot).

Chats:
Brainstorming, research, and open discussion.

6

AI Workflow

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

Development Tools

  • VSCode (+ WSL)
  • Extensions: Cline (+ CLI since v3.33), Roo, ChatGpt, ClaudeCode (+CLI)

8

Development Tools

  • VSCode (+ WSL)
  • Extensions: Cline (+ CLI since v3.33), Roo, ChatGpt, ClaudeCode (+CLI)
  • API Providers: VS Code LM API (GitHub account), Anthropic, Cline

9

Development Tools

  • Cline, with GPT-5, via. VS Code LM API (GitHub) provider
  • "Can you add logging to my code?"

10

"Add logger" Workflow

"Need more context"

Here are 5 options:

...

Add logging to my code

How to add logging to C++ code?

C++ project

No logger

11

Breaking AI into parts

12

Part I: Model

  • The "Brain" processing your requests
  • LLMs (large language model) or SLMs
  • Architecture: Neural Networks (transformers)
  • Provider: Server which runs the model

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

Part II: Context

  • Models for code generation (mostly) read TEXT (or images)
  • Context: everything added to the request
     
  • Context types (my definition):
    1. Mutable per specific run (e.g. search results, chat)
    2. Immutable (e.g. project files, system prompts)

14

Part II: Mutable Context

15

  • Chat, Answers & Clerifications
  • The specific files LLM choose to look at during this run
  • Results of searches

Part II: Immutable Context

16

Part II: Immutable Context

17

 activeContext.md

 productContext.md

 progress.md

 projectbrief.md

 systemPatterns.md

 techContext.md

Part II: Immutable Context

18

Part II: Immutable Context

19

Part II: Immutable Context

  • MCP (https://github.com/inbal2l/Logging_MCP_Demo)

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

Part II: Immutable Context

  • MCP (https://github.com/inbal2l/Logging_MCP_Demo)

21

Questions?

22

  • Infrastructure connecting to the model
  • Different configuration options

Part III: Frameworks

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>

Part III: Frameworks

24

  • Information collected
  • Different processing before data reaches LLM

Part III: Frameworks

  • Information collected
  • Different processing before data reaches LLM

25

Automated

UI
focused

Immutable
Context

Configurable

Summary: The MCF Approach

26

Summary: The MCF Approach

27

28

The Big Picture

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

The Big Picture

* From: Welcome to v1.0 of meta::[[verse]]! (C++ 26 Reflection)

30

The Big Picture

* From: Welcome to v1.0 of meta::[[verse]]! (C++ 26 Reflection)

31

The Big Picture

* From: Welcome to v1.0 of meta::[[verse]]! (C++ 26 Reflection)

32

AI

Auto-
mation

The Big Picture

Increase Automation:

  1. Ordered instructions
  2. Insert instruction checks between stages
  3. Separate roles, use "supervisor"
  4. Inject determinism (MCP tools, Cline's workflows, etc.)
  5. Increase resoning using feedback loops

UI
focused

Inconsistent

Automated

Main Takeaways

Stage I: Capture project-specific knowledge in writing

  1. Context of the project
  2. Preferences for code style and guidelines
  3. Technical information

33

Main Takeaways

Stage II: Feed the knowledge to your framework

  1. Learn the ways to configure it
  2. Identify mutable and immutable context
  3. Use avaliable protocols:
    1. memory bank
    2. markdown files
    3. MCPs
    4. specialized agents
    5. ...

34

Main Takeaways

Stage III: Iterative improvment on the go

  1. Test on different flows
  2. Extend tools and abilities as needed
    1. Online resources
    2. Configure actions
  3. Fine tune instructions for the model where needed

35

Main Takeaways

Stage IV: Don't be afraid to Mix and Match

  1. Replace parts of your setup and see what happens!
    1. ​Replace the Model
    2. Replace the Configurations
    3. Replace the Framework

36

Experiment!

  • "Core C++" (TLV/Jerusalem Meetup)
  • "Haifa::C++" (Haifa area)
  • Israeli National Body (since 2019)
    Meetings and info: https://wg21il.github.io/

Inbal Levi
inballevi@microsoft.com

sinbal2lextra@gmail.com
​linkedin/inballevi

Thank You!

Stay in touch!

Open positions!