{"doi":"10.1007/978-1-4842-5884-2_21","title":"Constrained Templates and Concepts","abstract":null,"journal":"Beginning C++20","year":2020,"id":642948,"datarank":0.0,"base_score":0.0,"endowment":0.0,"self_citation_contribution":0.0,"citation_network_contribution":0.0,"self_endowment_contribution":0.0,"citer_contribution":0.0,"corpus_percentile":null,"corpus_rank":null,"citation_count":0,"citer_count":0,"citers_with_citation_signal":0,"citers_with_endowment":0,"datacite_reuse_total":0,"is_dataset":false,"is_dataset_confidence":null,"is_data_producer":false,"deposit_databanks":null,"is_oa":false,"file_count":0,"downloads":0,"has_version_chain":false,"published_date":null,"fair_score":null,"fair_percentile":null,"algorithm_id":"datarank_citation_only_1hop_v6","ranking_scope":"data_only","authors":[{"id":1672656,"name":"Peter Van Weert","orcid":null,"position":1,"is_corresponding":false},{"id":1567940,"name":"Ivor Horton","orcid":null,"position":0,"is_corresponding":false}],"reference_count":0,"raw_metadata":{"has_enrichment":true,"resolved":true,"title":"Constrained Templates and Concepts","abstract":"Templates define parameterized families of C++ entities such as functions (Chapter 10) or class types (Chapter 17). In practice, templates are mostly parameterized on seemingly arbitrary types. Yet most templates cannot be instantiated for just any type; at least not without error. The binary std::max<>() function template, for instance, can only be instantiated for types that support the < operator. And the std::vector<> and std::optional<> class templates may not be instantiated for reference types, void, or array types. Most of your own templates have similar restrictions as well, whether you realized it or not.","is_dataset_classified":null,"base_score":0.0,"endowment":0.0,"datacite_reuse_total":0,"file_count":0,"downloads":0,"views":0,"has_version_chain":false,"is_dataset":false,"is_oa":false,"pmid":"19767382","pmcid":null,"openalex_id":"https://openalex.org/W3091442679","authors":[],"funders":[],"total_grants":0,"fwci":0.0,"citation_percentile":0.17275646,"influential_citations":0,"citation_trend":[],"oa_status":"closed","license":"http://www.springer.com/tdm","oa_locations":[{"url":"http://link.springer.com/content/pdf/10.1007/978-1-4842-5884-2_21","host_type":"publisher"},{"url":"https://doi.org/10.1007/978-1-4842-5884-2_21","host_type":"ebook platform"}],"fields_of_study":["Logic, programming, and type systems"],"mesh_terms":[],"keywords":["Template","Parameterized complexity","Computer science","Class (philosophy)","Programming language","Theoretical computer science","Algorithm","Artificial intelligence"],"sdg_mappings":[],"linked_datasets":[],"clinical_trials":[],"software_tools":[],"database_accessions":[],"source":"live","citation_network_status":"fetched"},"created_at":"2026-08-08T11:08:20.113796Z","pmid":null,"pmcid":null,"fwci":null,"citation_percentile":null,"influential_citations":0,"oa_status":null,"license":null,"views":0,"total_file_size_bytes":0,"version_count":0,"fair_f":null,"fair_a":null,"fair_i":null,"fair_r":null,"fair_zscore":null,"fair_rationale":null,"fair_model":null,"fair_agent_version":null,"fair_fulltext_source":null,"fair_has_llm":null,"fair_computed_at":null,"clinical_trials":[],"software_tools":[],"db_accessions":[],"linked_datasets":[],"topics":[]}