{"id":"https://openalex.org/W3008119296","doi":"https://doi.org/10.1145/3356579","title":"How C++ Templates Are Used for Generic Programming","display_name":"How C++ Templates Are Used for Generic Programming","publication_year":2020,"publication_date":"2020-01-30","ids":{"openalex":"https://openalex.org/W3008119296","doi":"https://doi.org/10.1145/3356579","mag":"3008119296"},"language":"en","primary_location":{"id":"doi:10.1145/3356579","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3356579","pdf_url":null,"source":{"id":"https://openalex.org/S142627899","display_name":"ACM Transactions on Software Engineering and Methodology","issn_l":"1049-331X","issn":["1049-331X","1557-7392"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"ACM Transactions on Software Engineering and Methodology","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5100443798","display_name":"Lin Chen","orcid":"https://orcid.org/0000-0003-2352-2226"},"institutions":[{"id":"https://openalex.org/I881766915","display_name":"Nanjing University","ror":"https://ror.org/01rxvg760","country_code":"CN","type":"education","lineage":["https://openalex.org/I881766915"]}],"countries":["CN"],"is_corresponding":false,"raw_author_name":"Lin Chen","raw_affiliation_strings":["Nanjing University, China"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Nanjing University, China","institution_ids":["https://openalex.org/I881766915"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5033050983","display_name":"Di Wu","orcid":"https://orcid.org/0000-0003-1096-7074"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Di Wu","raw_affiliation_strings":["Momenta, China"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Momenta, China","institution_ids":[]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5109372883","display_name":"Wanwangying Ma","orcid":null},"institutions":[{"id":"https://openalex.org/I881766915","display_name":"Nanjing University","ror":"https://ror.org/01rxvg760","country_code":"CN","type":"education","lineage":["https://openalex.org/I881766915"]}],"countries":["CN"],"is_corresponding":false,"raw_author_name":"Wanwangying Ma","raw_affiliation_strings":["Nanjing University, China"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Nanjing University, China","institution_ids":["https://openalex.org/I881766915"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5031391841","display_name":"Yuming Zhou","orcid":"https://orcid.org/0000-0002-4645-2526"},"institutions":[{"id":"https://openalex.org/I881766915","display_name":"Nanjing University","ror":"https://ror.org/01rxvg760","country_code":"CN","type":"education","lineage":["https://openalex.org/I881766915"]}],"countries":["CN"],"is_corresponding":false,"raw_author_name":"Yuming Zhou","raw_affiliation_strings":["Nanjing University, China"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Nanjing University, China","institution_ids":["https://openalex.org/I881766915"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5100331400","display_name":"Baowen Xu","orcid":"https://orcid.org/0000-0001-7743-1296"},"institutions":[{"id":"https://openalex.org/I881766915","display_name":"Nanjing University","ror":"https://ror.org/01rxvg760","country_code":"CN","type":"education","lineage":["https://openalex.org/I881766915"]}],"countries":["CN"],"is_corresponding":false,"raw_author_name":"Baowen Xu","raw_affiliation_strings":["Nanjing University, China"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Nanjing University, China","institution_ids":["https://openalex.org/I881766915"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5091697161","display_name":"Hareton Leung","orcid":"https://orcid.org/0000-0002-1766-7667"},"institutions":[{"id":"https://openalex.org/I14243506","display_name":"Hong Kong Polytechnic University","ror":"https://ror.org/0030zas98","country_code":"HK","type":"education","lineage":["https://openalex.org/I14243506"]}],"countries":["HK"],"is_corresponding":false,"raw_author_name":"Hareton Leung","raw_affiliation_strings":["Hong Kong Polytechnic University, China"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Hong Kong Polytechnic University, China","institution_ids":["https://openalex.org/I14243506"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":6,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":1.1139,"has_fulltext":false,"cited_by_count":9,"citation_normalized_percentile":{"value":0.83596382,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":99},"biblio":{"volume":"29","issue":"1","first_page":"1","last_page":"49"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9998999834060669,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9962999820709229,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9821000099182129,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/template","display_name":"Template","score":0.9192553162574768},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8162635564804077},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.5502431988716125},{"id":"https://openalex.org/keywords/generic-programming","display_name":"Generic programming","score":0.5423927307128906},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.4767768681049347},{"id":"https://openalex.org/keywords/construct","display_name":"Construct (python library)","score":0.4347764849662781},{"id":"https://openalex.org/keywords/software-engineering","display_name":"Software engineering","score":0.3982805013656616}],"concepts":[{"id":"https://openalex.org/C82714645","wikidata":"https://www.wikidata.org/wiki/Q438331","display_name":"Template","level":2,"score":0.9192553162574768},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8162635564804077},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.5502431988716125},{"id":"https://openalex.org/C7051814","wikidata":"https://www.wikidata.org/wiki/Q1051282","display_name":"Generic programming","level":2,"score":0.5423927307128906},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.4767768681049347},{"id":"https://openalex.org/C2780801425","wikidata":"https://www.wikidata.org/wiki/Q5164392","display_name":"Construct (python library)","level":2,"score":0.4347764849662781},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.3982805013656616}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3356579","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3356579","pdf_url":null,"source":{"id":"https://openalex.org/S142627899","display_name":"ACM Transactions on Software Engineering and Methodology","issn_l":"1049-331X","issn":["1049-331X","1557-7392"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"ACM Transactions on Software Engineering and Methodology","raw_type":"journal-article"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G5869139307","display_name":null,"funder_award_id":"2018YFB1003901","funder_id":"https://openalex.org/F4320335777","funder_display_name":"National Key Research and Development Program of China"},{"id":"https://openalex.org/G8465621866","display_name":null,"funder_award_id":"61872177, 61832009, 61772263, 61432001, 61772259","funder_id":"https://openalex.org/F4320321001","funder_display_name":"National Natural Science Foundation of China"}],"funders":[{"id":"https://openalex.org/F4320321001","display_name":"National Natural Science Foundation of China","ror":"https://ror.org/01h0zpd94"},{"id":"https://openalex.org/F4320335777","display_name":"National Key Research and Development Program of China","ror":null}],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":68,"referenced_works":["https://openalex.org/W164488634","https://openalex.org/W281855447","https://openalex.org/W1486064919","https://openalex.org/W1505648523","https://openalex.org/W1596530170","https://openalex.org/W1598339794","https://openalex.org/W1913101905","https://openalex.org/W1968986261","https://openalex.org/W1975040830","https://openalex.org/W1985797722","https://openalex.org/W2000042664","https://openalex.org/W2008512073","https://openalex.org/W2009322869","https://openalex.org/W2013999503","https://openalex.org/W2018616812","https://openalex.org/W2022361257","https://openalex.org/W2027285280","https://openalex.org/W2032286412","https://openalex.org/W2035206966","https://openalex.org/W2039207184","https://openalex.org/W2043734519","https://openalex.org/W2045060485","https://openalex.org/W2048131499","https://openalex.org/W2050104787","https://openalex.org/W2054788588","https://openalex.org/W2062532313","https://openalex.org/W2063989349","https://openalex.org/W2076990583","https://openalex.org/W2077337386","https://openalex.org/W2083534053","https://openalex.org/W2084050405","https://openalex.org/W2086075542","https://openalex.org/W2089118314","https://openalex.org/W2090306244","https://openalex.org/W2093995814","https://openalex.org/W2100044779","https://openalex.org/W2102979206","https://openalex.org/W2104217368","https://openalex.org/W2106558531","https://openalex.org/W2110065044","https://openalex.org/W2110331264","https://openalex.org/W2112939580","https://openalex.org/W2121153333","https://openalex.org/W2122475259","https://openalex.org/W2131573942","https://openalex.org/W2133675710","https://openalex.org/W2142958724","https://openalex.org/W2144370993","https://openalex.org/W2146437164","https://openalex.org/W2146682513","https://openalex.org/W2150699386","https://openalex.org/W2154809872","https://openalex.org/W2156618683","https://openalex.org/W2162889701","https://openalex.org/W2168374629","https://openalex.org/W2295042125","https://openalex.org/W2296146910","https://openalex.org/W2493005092","https://openalex.org/W2913348136","https://openalex.org/W2987803397","https://openalex.org/W2996346140","https://openalex.org/W3101068774","https://openalex.org/W3103362336","https://openalex.org/W4231958944","https://openalex.org/W4235077482","https://openalex.org/W4240935063","https://openalex.org/W4253185845","https://openalex.org/W4386366039"],"related_works":["https://openalex.org/W4236036386","https://openalex.org/W4235287820","https://openalex.org/W4247841996","https://openalex.org/W1791942036","https://openalex.org/W4247549863","https://openalex.org/W2133625592","https://openalex.org/W2073905442","https://openalex.org/W2128235835","https://openalex.org/W4255408021","https://openalex.org/W4234406076"],"abstract_inverted_index":{"Generic":[0],"programming":[1,21],"is":[2,17,41,129],"a":[3,133,150,185],"key":[4],"paradigm":[5],"for":[6,14,24,220,231],"developing":[7,52],"reusable":[8],"software":[9],"components.":[10],"The":[11],"inherent":[12],"support":[13,239],"generic":[15,27,240],"constructs":[16],"therefore":[18],"important":[19,115],"in":[20,51,68,188],"languages.":[22],"As":[23],"C++,":[25],"the":[26,34,64,90,93,103,113,159,180,224],"construct,":[28],"templates,":[29],"has":[30],"been":[31],"supported":[32],"since":[33],"language":[35,161,202],"was":[36],"first":[37],"released.":[38],"However,":[39],"little":[40],"currently":[42],"known":[43],"about":[44],"how":[45],"C++":[46,86,192,211],"templates":[47,67,118,140,183,197],"are":[48,119,198,216],"actually":[49],"used":[50,121,136],"real":[53],"software.":[54],"In":[55],"this":[56,127],"study,":[57],"we":[58],"conduct":[59],"an":[60],"experiment":[61],"to":[62,88,122,132,169,209,222,234,238],"investigate":[63],"use":[65,95,181,228],"of":[66,75,81,85,92,96,182,226],"practice.":[69],"We":[70,98,111],"analyze":[71],"1,267":[72],"historical":[73],"revisions":[74],"50":[76],"open":[77],"source":[78],"systems,":[79],"consisting":[80],"566":[82],"million":[83],"lines":[84],"code,":[87],"collect":[89],"data":[91,105],"practical":[94],"templates.":[97],"perform":[99],"statistical":[100],"analyses":[101],"on":[102],"collected":[104],"and":[106,147,191],"produce":[107],"many":[108],"interesting":[109],"results.":[110],"uncover":[112],"following":[114],"findings:":[116],"(1)":[117],"practically":[120],"prevent":[123],"code":[124],"duplication,":[125],"but":[126,229],"benefit":[128],"largely":[130],"confined":[131],"few":[134],"highly":[135],"templates;":[137],"(2)":[138],"function":[139],"do":[141,153],"not":[142,154,218],"effectively":[143],"replace":[144],"C-style":[145],"generics,":[146],"developers":[148,164,193],"with":[149],"C":[151,205],"background":[152,207],"show":[155],"significant":[156],"preference":[157],"between":[158],"two":[160],"constructs;":[162],"(3)":[163],"seldom":[165],"convert":[166],"dynamic":[167],"polymorphism":[168,171],"static":[170],"by":[172],"using":[173,196],"CRTP":[174],"(Curiously":[175],"Recursive":[176],"Template":[177],"Pattern);":[178],"(4)":[179],"follows":[184],"power-law":[186],"distribution":[187],"most":[189],"cases,":[190],"who":[194],"prefer":[195],"those":[199],"without":[200],"other":[201],"background;":[203],"(5)":[204],"developer":[206],"seems":[208],"override":[210],"project":[212],"guidelines.":[213],"These":[214],"findings":[215],"helpful":[217],"only":[219],"researchers":[221],"understand":[223],"tendency":[225],"template":[227],"also":[230],"tool":[232],"builders":[233],"implement":[235],"better":[236],"tools":[237],"programming.":[241]},"counts_by_year":[{"year":2026,"cited_by_count":2},{"year":2025,"cited_by_count":1},{"year":2024,"cited_by_count":2},{"year":2023,"cited_by_count":2},{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":1}],"updated_date":"2026-06-11T09:08:48.828518","created_date":"2025-10-10T00:00:00"}
