{"id":15156759,"url":"https://github.com/puppetlabs/cppbestpractices","last_synced_at":"2025-09-30T06:31:16.726Z","repository":{"id":66233162,"uuid":"41456207","full_name":"puppetlabs/cppbestpractices","owner":"puppetlabs","description":"Collection of C++ Best Practices at Puppet Labs","archived":true,"fork":false,"pushed_at":"2017-09-27T21:12:52.000Z","size":61,"stargazers_count":19,"open_issues_count":10,"forks_count":6,"subscribers_count":139,"default_branch":"master","last_synced_at":"2024-09-28T02:39:38.533Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/puppetlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2015-08-27T00:16:13.000Z","updated_at":"2023-05-12T08:05:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"15833c50-67da-425c-ae76-a1de5196ae39","html_url":"https://github.com/puppetlabs/cppbestpractices","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fcppbestpractices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fcppbestpractices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fcppbestpractices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fcppbestpractices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/puppetlabs","download_url":"https://codeload.github.com/puppetlabs/cppbestpractices/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234712644,"owners_count":18875490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-09-26T19:41:16.023Z","updated_at":"2025-09-30T06:31:16.433Z","avatar_url":"https://github.com/puppetlabs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C++ Best Practices at Puppet Labs\n\n**Table of Contents**\n\n- [Getting Started Resources](01-Getting-Started.md#getting-started-resources)\n  - [The C++ Language](01-Getting-Started.md#the-c-language)\n    - [Study Guide](01-Getting-Started.md#study-guide)\n    - [Language References](01-Getting-Started.md#language-references)\n    - [Community](01-Getting-Started.md#community)\n    - [Practitioner Knowledge](01-Getting-Started.md#practitioner-knowledge)\n    - [Tooling](01-Getting-Started.md#tooling)\n  - [Starting a Project](01-Getting-Started.md#starting-a-project)\n    - [Libraries](01-Getting-Started.md#libraries)\n    - [cpp-project-template](01-Getting-Started.md#cpp-project-template)\n    - [Vanagon](01-Getting-Started.md#vanagon)\n    - [Cross-platform development](01-Getting-Started.md#cross-platform-development)\n    - [Internationalization (i18n)](01-Getting-Started.md#internationalization-i18n)\n- [Style Guide](02-Style-Guide.md#style-guide)\n  - [Header Files](02-Style-Guide.md#header-files)\n  - [Namespaces](02-Style-Guide.md#namespaces)\n  - [Exceptions vs Error-Handling](02-Style-Guide.md#exceptions-vs-error-handling)\n  - [TODO: Still under development.](02-Style-Guide.md#todo-still-under-development)\n- [FAQ](03-FAQ.md#faq)\n  - [Q: Writing loops](03-FAQ.md#q-writing-loops)\n  - [Q: Variable modifiers](03-FAQ.md#q-variable-modifiers)\n  - [Q: Arguments and return types in class methods](03-FAQ.md#q-arguments-and-return-types-in-class-methods)\n  - [Q: How do I use polymorphic objects?](03-FAQ.md#q-how-do-i-use-polymorphic-objects)\n  - [Q: How do I share ownership of an object between multiple classes/data structures?](03-FAQ.md#q-how-do-i-share-ownership-of-an-object-between-multiple-classesdata-structures)\n  - [Q: When does it make sense to use new/delete?](03-FAQ.md#q-when-does-it-make-sense-to-use-newdelete)\n- [Rants](04-Rants.md#rants)\n  - [Potential Tools](04-Rants.md#potential-tools)\n    - [Dynamic Analysis](04-Rants.md#dynamic-analysis)\n    - [STL debug support in GDB](04-Rants.md#stl-debug-support-in-gdb)\n    - [cling](04-Rants.md#cling---an-interactive-c-interpreter)\n  - [Libraries](04-Rants.md#libraries)\n    - [Selection Criteria](04-Rants.md#selection-criteria)\n    - [Using libraries in a project](04-Rants.md#using-libraries-in-a-project)\n    - [Interesting Candidates](04-Rants.md#interesting-candidates)\n\n## Maintenance\n\nMaintainers: Michael Smith \u003cmichael.smith@puppet.com\u003e\n\nTickets: Can be opened in Github Issues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Fcppbestpractices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpuppetlabs%2Fcppbestpractices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Fcppbestpractices/lists"}