# isocpp/cppcoreguidelines architecture

> Architecture diagram of the GitHub repository isocpp/cppcoreguidelines, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/isocpp/cppcoreguidelines
- Repository: https://github.com/isocpp/cppcoreguidelines

## Overview

This repository publishes the C++ Core Guidelines: a document for developers to consult when designing and implementing modern C++ code. Its principal workflow is to apply guidance on interfaces, resource and memory management, and concurrency, then use analysis tools to identify rule violations. The README also emphasizes type safety, simplicity, and gradual adoption. The tree contains supporting papers, but the sampled source does not establish a runtime pipeline; relationships below are limited to capabilities and links stated in the README.

Main entry points: [`CppCoreGuidelines.md`](https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md) (Core Guidelines), [`README.md`](https://github.com/isocpp/cppcoreguidelines/blob/master/README.md) (Gradual adoption), [`docs/Introduction to type and resource safety.pdf`](https://github.com/isocpp/cppcoreguidelines/blob/master/docs/Introduction%20to%20type%20and%20resource%20safety.pdf) (Safety papers), [`docs/Lifetime.pdf`](https://github.com/isocpp/cppcoreguidelines/blob/master/docs/Lifetime.pdf) (Lifetime paper)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_guidance["Core guidance"]
  node_guidelines["Core Guidelines"]
  node_interfaces["Interfaces"]
  node_resources["Resource management"]
  node_memory["Memory management"]
  node_concurrency["Concurrency"]
  node_safety["Type safety"]
  node_simplicity["Simplicity"]
end

subgraph group_adoption["Use and analysis"]
  node_adoption["Gradual adoption<br/>[README.md]"]
  node_analyzer["Analysis tool"]
end

subgraph group_references["Supporting material"]
  node_gsl["Guidelines Support Library"]
  node_safety_papers["Safety papers"]
  node_lifetime_paper["Lifetime paper<br/>[Lifetime.pdf]"]
end

node_developer(("C++ developer"))

node_developer -->|"consults"| node_guidelines
node_guidelines -->|"covers"| node_interfaces
node_guidelines -->|"covers"| node_resources
node_guidelines -->|"covers"| node_memory
node_guidelines -->|"covers"| node_concurrency
node_guidelines -->|"promotes"| node_safety
node_guidelines -->|"promotes"| node_simplicity
node_developer -->|"introduces gradually"| node_adoption
node_guidelines -->|"designed for support by"| node_analyzer
node_analyzer -->|"reports violations"| node_developer
node_guidelines -.->|"often uses"| node_gsl
node_guidelines -.-> node_safety_papers
node_guidelines -.-> node_lifetime_paper

click node_guidelines "https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md"
click node_interfaces "https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md"
click node_resources "https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md"
click node_memory "https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md"
click node_concurrency "https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md"
click node_safety "https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md"
click node_simplicity "https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md"
click node_adoption "https://github.com/isocpp/cppcoreguidelines/blob/master/README.md"
click node_safety_papers "https://github.com/isocpp/cppcoreguidelines/blob/master/docs/Introduction%20to%20type%20and%20resource%20safety.pdf"
click node_lifetime_paper "https://github.com/isocpp/cppcoreguidelines/blob/master/docs/Lifetime.pdf"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_guidelines,node_interfaces,node_resources,node_memory,node_concurrency,node_safety,node_simplicity toneBlue
class node_adoption,node_analyzer toneAmber
class node_gsl,node_safety_papers,node_lifetime_paper toneMint
class node_developer toneIndigo
```

## Components

### Core guidance

- [Core Guidelines](https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md): `CppCoreGuidelines.md`
- [Interfaces](https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md): `CppCoreGuidelines.md`
- [Resource management](https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md): `CppCoreGuidelines.md`
- [Memory management](https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md): `CppCoreGuidelines.md`
- [Concurrency](https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md): `CppCoreGuidelines.md`
- [Type safety](https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md): `CppCoreGuidelines.md`
- [Simplicity](https://github.com/isocpp/cppcoreguidelines/blob/master/CppCoreGuidelines.md): `CppCoreGuidelines.md`

### Use and analysis

- [Gradual adoption](https://github.com/isocpp/cppcoreguidelines/blob/master/README.md): `README.md`
- **Analysis tool**

### Supporting material

- **Guidelines Support Library**
- [Safety papers](https://github.com/isocpp/cppcoreguidelines/blob/master/docs/Introduction%20to%20type%20and%20resource%20safety.pdf): `docs/Introduction to type and resource safety.pdf`
- [Lifetime paper](https://github.com/isocpp/cppcoreguidelines/blob/master/docs/Lifetime.pdf): `docs/Lifetime.pdf`

### Other components

- **C++ developer**

## Connections

- C++ developer → Core Guidelines: consults (evidence: `README.md`)
- Core Guidelines → Interfaces: covers (evidence: `README.md`)
- Core Guidelines → Resource management: covers (evidence: `README.md`)
- Core Guidelines → Memory management: covers (evidence: `README.md`)
- Core Guidelines → Concurrency: covers (evidence: `README.md`)
- Core Guidelines → Type safety: promotes (evidence: `README.md`)
- Core Guidelines → Simplicity: promotes (evidence: `README.md`)
- C++ developer → Gradual adoption: introduces gradually (evidence: `README.md`)
- Core Guidelines → Analysis tool: designed for support by (evidence: `README.md`)
- Analysis tool → C++ developer: reports violations (evidence: `README.md`)
- Core Guidelines → Guidelines Support Library: often uses (evidence: `README.md`)
- Core Guidelines → Safety papers
- Core Guidelines → Lifetime paper
