{"id":47300529,"url":"https://github.com/cppstat/cppstat","last_synced_at":"2026-03-31T06:00:39.473Z","repository":{"id":310492652,"uuid":"1024884909","full_name":"cppstat/cppstat","owner":"cppstat","description":"C and C++ Compiler Support Page","archived":false,"fork":false,"pushed_at":"2026-03-25T20:05:06.000Z","size":1688,"stargazers_count":170,"open_issues_count":1,"forks_count":11,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-03-29T01:24:53.104Z","etag":null,"topics":["c11","c23","c99","compiler","cpp","cpp11","cpp14","cpp17","cpp20","cpp23","cpp26","modern-cpp","reference","status-page","toolchains","website"],"latest_commit_sha":null,"homepage":"https://cppstat.dev","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cppstat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-23T11:49:36.000Z","updated_at":"2026-03-25T20:05:08.000Z","dependencies_parsed_at":"2025-12-09T22:03:36.645Z","dependency_job_id":null,"html_url":"https://github.com/cppstat/cppstat","commit_stats":null,"previous_names":["cdervis/cppstat"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cppstat/cppstat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cppstat%2Fcppstat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cppstat%2Fcppstat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cppstat%2Fcppstat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cppstat%2Fcppstat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cppstat","download_url":"https://codeload.github.com/cppstat/cppstat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cppstat%2Fcppstat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31223286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-31T04:08:55.938Z","status":"ssl_error","status_checked_at":"2026-03-31T04:08:47.883Z","response_time":111,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c11","c23","c99","compiler","cpp","cpp11","cpp14","cpp17","cpp20","cpp23","cpp26","modern-cpp","reference","status-page","toolchains","website"],"created_at":"2026-03-17T01:38:19.954Z","updated_at":"2026-03-31T06:00:39.468Z","avatar_url":"https://github.com/cppstat.png","language":"C++","readme":"\u003cdiv class=\"title-block\" style=\"text-align: center;\" align=\"center\"\u003e\n\n**[cppstat.dev]**\n\n[cppstat.dev]: https://cppstat.dev\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/cover_dark.webp\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/cover_light.webp\"\u003e\n  \u003cimg alt=\"Logo\" src=\"assets/cover_light.webp\" width=\"800\"\u003e\n\u003c/picture\u003e\n\n\u003c/div\u003e\n\n---\n\ncppstat is a site that lists C and C++ features and their respective support by compilers and standard libraries, designed as a simple, quickly searchable table.\n\n## Contributing\n\ncppstat fetches data from YAML files in the root directory.\nThe files are maintained as a best-effort and contributions are always welcome. You can contribute in multiple ways.\n\n**The recommended approach is cppstat's [UI-based editor](https://cppstat.dev/editor/).**\n\nThe editor provides search and a clear view of the data, Markdown preview and input validation. It can create a patch, commit, and PR automatically for you with a single click.\n\nAlternatively, you can use GitHub's web interface and commit your changes for approval.\nAnother approach is to [submit a ticket](https://github.com/cdervis/cppstat/issues) for any incorrect or missing information, or feature ideas.\n\n**If you are a toolchain developer, feel free to request full editorial access.**\n\n---\n\n### Feature Lists\n\nFeatures are declared in the `features_cpp\u003cversion\u003e.yaml` files.\nEach standard version of C and C++ has its own file; for example, `features_cpp23.yaml` contains all features of C++23.\n\nA feature has the following properties:\n\n- **`desc`**: The title and / or description of the feature. Supports Markdown.\n- **`paper`**: One or multiple paper numbers that belong to the feature.\n- **`lib`**: If true, the feature counts as a standard library feature. (default: `false`)\n- **`support`**: A list of toolchains that support the feature.\n  - A toolchain must be in the form of `\u003cname\u003e \u003cversion\u003e`, e.g. `GCC 16` and `MSVC 14.50`.\n    - If no version is specified, e.g. `GCC`, then that toolchain supports the feature in general.\n  - Adding a `(partial)` or `(hint)` suffix declares partial support or a hint.\n- **`hints`**: A list of hints targeting toolchains in the `support` list, where each entry has:\n  - **`target`**: The toolchain that this hint targets\n  - **`msg`**: The reason for partial support, or the hint. Supports Markdown.\n- **`ftm`**: A list of feature-testing macros (FTM) for the feature, where each entry has:\n  - **`name`**: The name of the FTM, e.g. `__cpp_lib_not_fn`\n  - **`value`**: The value of the FTM, e.g. `201603L`\n- **`content`**: Information about the feature (see below)\n- **`keywords`**: A list of keywords to categorize the feature. The feature will be included in search results when searching for these keywords.\n\nAs a **full** reference example, here is the definition of P2465 at the time of writing:\n\n```yaml\n- desc: 'Standard library modules (`import std`)'\n  paper: P2465\n  lib: true\n  support:\n    - GCC 15 (hint)\n    - Clang 17 (partial)\n    - Clang 19\n    - MSVC 14.50 (partial)\n    - MSVC 14.55\n  hints:\n    - target: GCC 15\n      msg: 'Requires enabling compiler flag `-fmodules` to enable experimental modules support.'\n    - target: Clang 17\n      msg: 'Experimental support only.'\n    - target: MSVC 14.50\n      msg: 'Modules work, but you have to manually add them to your Visual Studio project.'\n  ftm:\n    - name: __cpp_lib_modules\n      value: 202207L\n```\n\nWhich will look like the following on cppstat:\n\n![Feature Example](assets/feature_example.webp)\n\n---\n\n### Feature Content\n\nEvery feature can have an in-depth explanation hidden behind its info button.\n\nThe **`content`** property of a feature specifies the **Markdown file** that describes the feature.\nThis file is expected to be in the `content` folder.\n\nFor example, the feature P2589 (`static operator[]`) is defined as follows:\n\n```yaml\n- desc: '`static operator[]`'\n  ...\n  content: static-subscript-operator.md\n```\n\nThis feature's explanation is therefore expected to be in `content/static-subscript-operator.md`.\n\nThe structure of a content file should be:\n  1. **What It Does**: Explains to the reader briefly and in easy-to-understand terms what the function does.\n  2. **Why It Matters**: Explains the background to why the function was originally standardized, e.g. what historical problems it solves.\n  3. **Example**: A short, interactive example how the feature can be used in code.\n\n#### Code Editors\n\nEach feature should include a sample snippet that shows how it can be used in code.\nThe snippet helps the reader to better understand the feature and to try it out directly in the browser.\n\nMarkdown multiline code blocks are expected (triple backticks).\nFor C++ features, a **`cpp`** block is expected; for C it's **`c`**.\n\nExample of how it looks on cppstat:\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/feature_example_editor_dark.webp\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/feature_example_editor_light.webp\"\u003e\n  \u003cimg alt=\"Logo\" src=\"assets/feature_example_editor_light.webp\" width=\"600\"\u003e\n\u003c/picture\u003e\n\nThe frontmatter of a content file can specify the following properties:\n\n- **execute**: If `true`, allows execution of the program. (default: `false`)\n- **flags**: Extra flags to pass to the compiler. (default: latest standard of the feature's language + `-O2`)\n- **show_assembly**: If `true`, adds an assembly output tab to the compilation result. (default: `false`)\n\n---\n\n### Toolchains\n\nToolchains are declared in the `toolchains.yaml` file.\n\nNote that the list does not contain every possible toolchain release, but rather the toolchains that are referenced by a feature.\nThis is mostly major and minor releases, very rarely revisions.\n\nEach toolchain has the following properties:\n\n- `name`: The name and version of the toolchain, e.g. `GCC 11.5`\n- `released`: The official release date of the toolchain, e.g. `July 19, 2024`\n- `refs`: An **optional** list of related websites, such as release note links\n\nMSVC has the following additional properties:\n\n- `part_of`: The version of Visual Studio that the MSVC release was a part of, e.g. `Visual Studio 2019 version 16.1`\n\nXcode has the following additional properties:\n\n- `apple_clang`: The version of the Apple Clang compiler that was part of the Xcode release, e.g. `13.0.0 (clang-1300.0.29.3)`\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcppstat%2Fcppstat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcppstat%2Fcppstat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcppstat%2Fcppstat/lists"}