# isocpp/CppCoreGuidelines

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/isocpp-cppcoreguidelines).**

44,789 stars · 5,546 forks · CSS · other

## Links

- GitHub: https://github.com/isocpp/CppCoreGuidelines
- Homepage: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
- awesome-repositories: https://awesome-repositories.com/repository/isocpp-cppcoreguidelines.md

## Description

The CppCoreGuidelines is a comprehensive software engineering standard that provides a curated framework of coding conventions and design principles for C++. It serves as an authoritative guide for writing safe, efficient, and maintainable code by establishing high-level architectural patterns and organizational principles for large-scale projects. The guidelines emphasize the use of a strong, static type system to ensure memory safety and enforce consistent resource management patterns.

The project distinguishes itself by promoting the zero-overhead abstraction principle, ensuring that high-level language features remain performant. It provides specific, actionable recommendations for modern language usage, including robust error handling, template-based generic programming, and safe concurrency models. By offering a foundation for profile-based static analysis, the guidelines enable developers and automated tools to enforce safety constraints and identify anti-patterns directly within their codebases.

Beyond these core areas, the documentation covers a broad spectrum of software development concerns, ranging from interface design and class hierarchy organization to source file structure and naming conventions. It also includes guidance on leveraging the standard library and maintaining compatibility with legacy programming styles. The repository is maintained as a living document, providing a structured reference for developers aiming to improve the integrity and reliability of their software systems.

## Tags

### Software Engineering & Architecture

- [Software Architecture Design](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture-design.md) — Establishes structural patterns to ensure long-term maintainability and modularity.
- [Software Engineering Standards](https://awesome-repositories.com/f/software-engineering-architecture/software-engineering-standards.md) — Provides a comprehensive set of principles for writing safe, efficient, and maintainable software.
- [Development Best Practices](https://awesome-repositories.com/f/software-engineering-architecture/development-best-practices.md) — Provides a framework of conventions to ensure consistency and readability across projects.
- [Resource Management Patterns](https://awesome-repositories.com/f/software-engineering-architecture/resource-management-patterns.md) — Establishes patterns for the reliable management of memory, file handles, and other system resources. ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))
- [Resource Management Standards](https://awesome-repositories.com/f/software-engineering-architecture/resource-management-standards.md) — Provides consistent patterns for acquiring and releasing resources to prevent leaks.
- [High Performance Engineering](https://awesome-repositories.com/f/software-engineering-architecture/high-performance-engineering.md) — Outlines engineering strategies for minimizing latency and overhead in demanding environments.
- [Performance Optimization Guidelines](https://awesome-repositories.com/f/software-engineering-architecture/performance-optimization-guidelines.md) — Provides specific rules for minimizing resource usage and latency in high-performance applications. ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))
- [Error Handling Strategies](https://awesome-repositories.com/f/software-engineering-architecture/error-handling-strategies.md) — Defines reliable strategies for maintaining system integrity during runtime failures.
- [Interface Design Principles](https://awesome-repositories.com/f/software-engineering-architecture/interface-design-principles.md) — An interface is a contract between two parts of a program. Precisely stating what is expected of a supplier of a service and a user of that service is essential. Having good (easy-to-understand, encouraging efficient use ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))
- [Software Development Philosophies](https://awesome-repositories.com/f/software-engineering-architecture/software-development-philosophies.md) — Establishes foundational principles for expressing intent directly in code and maintaining static type safety. ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))
- [Concurrency Patterns](https://awesome-repositories.com/f/software-engineering-architecture/concurrency-patterns.md) — Provides patterns for executing multiple tasks simultaneously to improve system responsiveness and throughput. ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))
- [Concurrent Programming Patterns](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-programming-patterns.md) — Provides architectural guidance for building thread-safe and parallel systems.
- [Coding Profiles](https://awesome-repositories.com/f/software-engineering-architecture/coding-profiles.md) — Defines structured profiles to enforce consistent and safe coding standards. ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))
- [Functional Design Patterns](https://awesome-repositories.com/f/software-engineering-architecture/functional-design-patterns.md) — Structures computations into modular, meaningfully named functions that transition the system between consistent states. ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))
- [Generic Programming Patterns](https://awesome-repositories.com/f/software-engineering-architecture/generic-programming-patterns.md) — Promotes the use of generic patterns to reduce code duplication and improve type safety.
- [Immutability Strategies](https://awesome-repositories.com/f/software-engineering-architecture/immutability-strategies.md) — Promotes immutability to simplify program reasoning and prevent race conditions. ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))
- [Interface Design Patterns](https://awesome-repositories.com/f/software-engineering-architecture/interface-design-patterns.md) — Defines clear contracts between program components by isolating declarations in header files.
- [Zero-Overhead Abstractions](https://awesome-repositories.com/f/software-engineering-architecture/zero-overhead-abstractions.md) — Designs high-level language features that compile into machine code performing as efficiently as hand-written low-level instructions.

### Programming Languages & Runtimes

- [Static Type Systems](https://awesome-repositories.com/f/programming-languages-runtimes/static-type-systems.md) — Uses a strong, static type system to catch errors at compile time and ensure memory safety.
- [Language Usage Specifications](https://awesome-repositories.com/f/programming-languages-runtimes/language-usage-specifications.md) — Offers authoritative guidance on using modern language features to improve code safety.
- [Generic Programming Frameworks](https://awesome-repositories.com/f/programming-languages-runtimes/generic-programming-frameworks.md) — Parameterizes algorithms and data structures by types at compile time to generate efficient, type-safe code.
- [Generic Programming Guidelines](https://awesome-repositories.com/f/programming-languages-runtimes/generic-programming-guidelines.md) — Offers rules for creating flexible, type-parameterized algorithms and data structures. ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))
- [Standard Library Usage](https://awesome-repositories.com/f/programming-languages-runtimes/standard-library-usage.md) — Provides guidance on using standard library features to reduce code complexity. ([source](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines))

### Testing & Quality Assurance

- [Static Analysis Foundations](https://awesome-repositories.com/f/testing-quality-assurance/static-analysis-foundations.md) — Defines a structured collection of rules to help identify potential errors and anti-patterns.
- [Static Analysis Profiles](https://awesome-repositories.com/f/testing-quality-assurance/static-analysis-profiles.md) — Applies customizable rule sets during compilation to enforce safety constraints and restrict dangerous language features.
