{"id":"https://openalex.org/W4409311173","doi":"https://doi.org/10.1145/3720422","title":"Fast Constraint Synthesis for C++ Function Templates","display_name":"Fast Constraint Synthesis for C++ Function Templates","publication_year":2025,"publication_date":"2025-04-09","ids":{"openalex":"https://openalex.org/W4409311173","doi":"https://doi.org/10.1145/3720422"},"language":"en","primary_location":{"id":"doi:10.1145/3720422","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3720422","pdf_url":null,"source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"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":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://doi.org/10.1145/3720422","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5084788593","display_name":"Shuo Ding","orcid":"https://orcid.org/0000-0003-0843-0729"},"institutions":[{"id":"https://openalex.org/I130701444","display_name":"Georgia Institute of Technology","ror":"https://ror.org/01zkghx44","country_code":"US","type":"education","lineage":["https://openalex.org/I130701444"]}],"countries":["US"],"is_corresponding":true,"raw_author_name":"Shuo Ding","raw_affiliation_strings":["Georgia Institute of Technology, Atlanta, USA"],"affiliations":[{"raw_affiliation_string":"Georgia Institute of Technology, Atlanta, USA","institution_ids":["https://openalex.org/I130701444"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5078231842","display_name":"Qirun Zhang","orcid":"https://orcid.org/0000-0001-5367-9377"},"institutions":[{"id":"https://openalex.org/I130701444","display_name":"Georgia Institute of Technology","ror":"https://ror.org/01zkghx44","country_code":"US","type":"education","lineage":["https://openalex.org/I130701444"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Qirun Zhang","raw_affiliation_strings":["Georgia Institute of Technology, Atlanta, USA"],"affiliations":[{"raw_affiliation_string":"Georgia Institute of Technology, Atlanta, USA","institution_ids":["https://openalex.org/I130701444"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5084788593"],"corresponding_institution_ids":["https://openalex.org/I130701444"],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":false,"cited_by_count":0,"citation_normalized_percentile":{"value":0.07592871,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":"9","issue":"OOPSLA1","first_page":"225","last_page":"252"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"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/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9993000030517578,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"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/T10142","display_name":"Formal Methods in Verification","score":0.9990000128746033,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"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/T10933","display_name":"Real-Time Systems Scheduling","score":0.9979000091552734,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"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.8403297662734985},{"id":"https://openalex.org/keywords/constraint","display_name":"Constraint (computer-aided design)","score":0.5169045925140381},{"id":"https://openalex.org/keywords/function","display_name":"Function (biology)","score":0.48125049471855164},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.4572574198246002},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.3131682276725769},{"id":"https://openalex.org/keywords/mathematics","display_name":"Mathematics","score":0.2737535536289215},{"id":"https://openalex.org/keywords/biology","display_name":"Biology","score":0.09319248795509338},{"id":"https://openalex.org/keywords/geometry","display_name":"Geometry","score":0.09145146608352661},{"id":"https://openalex.org/keywords/cell-biology","display_name":"Cell biology","score":0.08590218424797058}],"concepts":[{"id":"https://openalex.org/C82714645","wikidata":"https://www.wikidata.org/wiki/Q438331","display_name":"Template","level":2,"score":0.8403297662734985},{"id":"https://openalex.org/C2776036281","wikidata":"https://www.wikidata.org/wiki/Q48769818","display_name":"Constraint (computer-aided design)","level":2,"score":0.5169045925140381},{"id":"https://openalex.org/C14036430","wikidata":"https://www.wikidata.org/wiki/Q3736076","display_name":"Function (biology)","level":2,"score":0.48125049471855164},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.4572574198246002},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.3131682276725769},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.2737535536289215},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.09319248795509338},{"id":"https://openalex.org/C2524010","wikidata":"https://www.wikidata.org/wiki/Q8087","display_name":"Geometry","level":1,"score":0.09145146608352661},{"id":"https://openalex.org/C95444343","wikidata":"https://www.wikidata.org/wiki/Q7141","display_name":"Cell biology","level":1,"score":0.08590218424797058}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3720422","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3720422","pdf_url":null,"source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"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":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"}],"best_oa_location":{"id":"doi:10.1145/3720422","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3720422","pdf_url":null,"source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"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":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":41,"referenced_works":["https://openalex.org/W61606928","https://openalex.org/W208073541","https://openalex.org/W1691668264","https://openalex.org/W1859941069","https://openalex.org/W1969664124","https://openalex.org/W1997981086","https://openalex.org/W2018094844","https://openalex.org/W2074644416","https://openalex.org/W2101432564","https://openalex.org/W2108632968","https://openalex.org/W2113709047","https://openalex.org/W2129345992","https://openalex.org/W2130402533","https://openalex.org/W2134093956","https://openalex.org/W2139099489","https://openalex.org/W2140021378","https://openalex.org/W2140845192","https://openalex.org/W2160151966","https://openalex.org/W2329329248","https://openalex.org/W2347106652","https://openalex.org/W2548165777","https://openalex.org/W2561055248","https://openalex.org/W2561266941","https://openalex.org/W2778029444","https://openalex.org/W2953940813","https://openalex.org/W2954401434","https://openalex.org/W2962823786","https://openalex.org/W2972574632","https://openalex.org/W3186343449","https://openalex.org/W3189928571","https://openalex.org/W3207476902","https://openalex.org/W4206047963","https://openalex.org/W4225149718","https://openalex.org/W4229675450","https://openalex.org/W4245276232","https://openalex.org/W4246166885","https://openalex.org/W4253456425","https://openalex.org/W4284685949","https://openalex.org/W4308643012","https://openalex.org/W4387885479","https://openalex.org/W6949649045"],"related_works":["https://openalex.org/W4391375266","https://openalex.org/W2899084033","https://openalex.org/W2748952813","https://openalex.org/W2121300814","https://openalex.org/W4231091074","https://openalex.org/W1886613375","https://openalex.org/W4236081792","https://openalex.org/W4250583430","https://openalex.org/W4234406076","https://openalex.org/W2010731026"],"abstract_inverted_index":{"C++":[0,13,89,110,168,205],"templates":[1,65],"are":[2,34],"a":[3,115],"powerful":[4],"feature":[5],"for":[6,36,64,109,133,216,225,246,250],"generic":[7],"programming":[8],"and":[9,29,40,49,66,101,128,144,163,184,212,233,248],"compile-time":[10],"computations,":[11],"but":[12],"compilers":[14],"often":[15,26],"emit":[16],"overly":[17],"verbose":[18],"template":[19,55,74,126],"error":[20,24,241],"messages.":[21],"Even":[22],"short":[23],"messages":[25],"involve":[27],"unnecessary":[28],"confusing":[30],"implementation":[31],"details,":[32],"which":[33,51,80,193],"difficult":[35],"developers":[37],"to":[38,106,119,149],"read":[39],"understand.":[41],"To":[42],"address":[43],"this":[44],"problem,":[45],"C++20":[46],"introduced":[47],"constraints":[48,75,108,132,148,215,223,238],"concepts,":[50],"impose":[52],"requirements":[53],"on":[54,159,166,234],"parameters.":[56],"The":[57,140,222],"new":[58],"features":[59],"can":[60,67,76,199,239],"define":[61],"clearer":[62],"interfaces":[63],"improve":[68],"compiler":[69],"diagnostics.":[70],"However,":[71],"manually":[72],"specifying":[73],"still":[77],"be":[78],"non-trivial,":[79],"becomes":[81],"even":[82],"more":[83],"challenging":[84],"when":[85],"working":[86],"with":[87,92,229],"legacy":[88],"projects":[90],"or":[91],"frequent":[93],"code":[94,206],"changes.":[95],"This":[96],"paper":[97],"bridges":[98],"the":[99,121,125,138,160,179,188,219,230,236],"gap":[100],"proposes":[102],"an":[103],"automatic":[104],"approach":[105,157],"synthesizing":[107],"function":[111,151,220],"templates.":[112,196,221],"We":[113,153],"utilize":[114],"lightweight":[116],"static":[117],"analysis":[118,141],"analyze":[120],"usage":[122],"patterns":[123],"within":[124],"body":[127],"summarize":[129],"them":[130],"into":[131],"each":[134],"type":[135],"parameter":[136],"of":[137,147,192,204,218],"template.":[139],"is":[142],"inter-procedural":[143],"uses":[145],"disjunctions":[146],"model":[150],"overloading.":[152],"have":[154],"implemented":[155],"our":[156],"based":[158],"Clang":[161],"frontend":[162],"evaluated":[164],"it":[165],"two":[167,173],"libraries":[169],"chosen":[170],"separately":[171],"from":[172,178,187],"popular":[174],"library":[175],"sets:":[176],"algorithm":[177,226,247],"Standard":[180],"Template":[181],"Library":[182],"(STL)":[183],"special":[185,251],"functions":[186],"Boost":[189],"library,":[190],"both":[191],"extensively":[194],"use":[195],"Our":[197],"tool":[198],"process":[200],"over":[201],"110k":[202],"lines":[203],"in":[207],"less":[208],"than":[209],"1.5":[210],"seconds":[211],"synthesize":[213],"non-trivial":[214],"30%-40%":[217],"synthesized":[224,237],"align":[227],"well":[228],"standard":[231],"documentation,":[232],"average,":[235],"reduce":[240],"message":[242],"lengths":[243],"by":[244],"56.6%":[245],"63.8%":[249],"functions.":[252]},"counts_by_year":[],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
