{"id":"https://openalex.org/W2116159385","doi":"https://doi.org/10.1145/1289971.1289993","title":"Open multi-methods for c++","display_name":"Open multi-methods for c++","publication_year":2007,"publication_date":"2007-10-01","ids":{"openalex":"https://openalex.org/W2116159385","doi":"https://doi.org/10.1145/1289971.1289993","mag":"2116159385"},"language":"en","primary_location":{"id":"doi:10.1145/1289971.1289993","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1289971.1289993","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 6th international conference on Generative programming and component engineering","raw_type":"proceedings-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/A5006697283","display_name":"Peter Pirkelbauer","orcid":"https://orcid.org/0000-0003-4185-5008"},"institutions":[{"id":"https://openalex.org/I91045830","display_name":"Texas A&M University","ror":"https://ror.org/01f5ytq51","country_code":"US","type":"education","lineage":["https://openalex.org/I91045830"]}],"countries":["US"],"is_corresponding":true,"raw_author_name":"Peter Pirkelbauer","raw_affiliation_strings":["Texas A&amp;M University, College Station, TX","Texas A&M University, College Station. TX#TAB#"],"affiliations":[{"raw_affiliation_string":"Texas A&amp;M University, College Station, TX","institution_ids":["https://openalex.org/I91045830"]},{"raw_affiliation_string":"Texas A&M University, College Station. TX#TAB#","institution_ids":["https://openalex.org/I91045830"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5041585598","display_name":"Yuriy Solodkyy","orcid":null},"institutions":[{"id":"https://openalex.org/I91045830","display_name":"Texas A&M University","ror":"https://ror.org/01f5ytq51","country_code":"US","type":"education","lineage":["https://openalex.org/I91045830"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Yuriy Solodkyy","raw_affiliation_strings":["Texas A&amp;M University, College Station, TX","Texas A&M University, College Station. TX#TAB#"],"affiliations":[{"raw_affiliation_string":"Texas A&amp;M University, College Station, TX","institution_ids":["https://openalex.org/I91045830"]},{"raw_affiliation_string":"Texas A&M University, College Station. TX#TAB#","institution_ids":["https://openalex.org/I91045830"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5109807287","display_name":"Bjarne Stroustrup","orcid":null},"institutions":[{"id":"https://openalex.org/I91045830","display_name":"Texas A&M University","ror":"https://ror.org/01f5ytq51","country_code":"US","type":"education","lineage":["https://openalex.org/I91045830"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Bjarne Stroustrup","raw_affiliation_strings":["Texas A&amp;M University, College Station, TX","Texas A&M University, College Station. TX#TAB#"],"affiliations":[{"raw_affiliation_string":"Texas A&amp;M University, College Station, TX","institution_ids":["https://openalex.org/I91045830"]},{"raw_affiliation_string":"Texas A&M University, College Station. TX#TAB#","institution_ids":["https://openalex.org/I91045830"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":3,"corresponding_author_ids":["https://openalex.org/A5006697283"],"corresponding_institution_ids":["https://openalex.org/I91045830"],"apc_list":null,"apc_paid":null,"fwci":6.2785,"has_fulltext":false,"cited_by_count":25,"citation_normalized_percentile":{"value":0.96256969,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":90,"max":98},"biblio":{"volume":null,"issue":null,"first_page":"123","last_page":"134"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9986000061035156,"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"}},"topics":[{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9986000061035156,"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.9984999895095825,"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/T10260","display_name":"Software Engineering Research","score":0.994700014591217,"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"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8124125003814697},{"id":"https://openalex.org/keywords/function","display_name":"Function (biology)","score":0.4788610637187958},{"id":"https://openalex.org/keywords/sketch","display_name":"Sketch","score":0.4762813448905945},{"id":"https://openalex.org/keywords/prolog","display_name":"Prolog","score":0.41811490058898926},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.4131677448749542},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.3969673216342926},{"id":"https://openalex.org/keywords/algorithm","display_name":"Algorithm","score":0.17660737037658691}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8124125003814697},{"id":"https://openalex.org/C14036430","wikidata":"https://www.wikidata.org/wiki/Q3736076","display_name":"Function (biology)","level":2,"score":0.4788610637187958},{"id":"https://openalex.org/C2779231336","wikidata":"https://www.wikidata.org/wiki/Q7534724","display_name":"Sketch","level":2,"score":0.4762813448905945},{"id":"https://openalex.org/C81721847","wikidata":"https://www.wikidata.org/wiki/Q163468","display_name":"Prolog","level":2,"score":0.41811490058898926},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.4131677448749542},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.3969673216342926},{"id":"https://openalex.org/C11413529","wikidata":"https://www.wikidata.org/wiki/Q8366","display_name":"Algorithm","level":1,"score":0.17660737037658691},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.0},{"id":"https://openalex.org/C78458016","wikidata":"https://www.wikidata.org/wiki/Q840400","display_name":"Evolutionary biology","level":1,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/1289971.1289993","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1289971.1289993","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 6th international conference on Generative programming and component engineering","raw_type":"proceedings-article"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.395.8419","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.395.8419","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"https://parasol.tamu.edu/people/yuriys/papers/OMM07.pdf","raw_type":"text"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":47,"referenced_works":["https://openalex.org/W25798763","https://openalex.org/W61997153","https://openalex.org/W220935706","https://openalex.org/W770523223","https://openalex.org/W1490452695","https://openalex.org/W1504648099","https://openalex.org/W1508638970","https://openalex.org/W1525643703","https://openalex.org/W1533109738","https://openalex.org/W1543902963","https://openalex.org/W1547150711","https://openalex.org/W1555946950","https://openalex.org/W1567903304","https://openalex.org/W1598339794","https://openalex.org/W1649645444","https://openalex.org/W1770006921","https://openalex.org/W1936852846","https://openalex.org/W1965478356","https://openalex.org/W1992668216","https://openalex.org/W2010303434","https://openalex.org/W2051096181","https://openalex.org/W2055970549","https://openalex.org/W2074590804","https://openalex.org/W2080670657","https://openalex.org/W2080674003","https://openalex.org/W2083220703","https://openalex.org/W2090461130","https://openalex.org/W2113547509","https://openalex.org/W2115072441","https://openalex.org/W2117174233","https://openalex.org/W2133625592","https://openalex.org/W2133786491","https://openalex.org/W2144015080","https://openalex.org/W2161783170","https://openalex.org/W2752885492","https://openalex.org/W2915029105","https://openalex.org/W2987803397","https://openalex.org/W3145128584","https://openalex.org/W4246027634","https://openalex.org/W4285719527","https://openalex.org/W4388696536","https://openalex.org/W6601070985","https://openalex.org/W6633003554","https://openalex.org/W6637879497","https://openalex.org/W6677920878","https://openalex.org/W6769869828","https://openalex.org/W7029321148"],"related_works":["https://openalex.org/W1485791179","https://openalex.org/W4249558550","https://openalex.org/W1999702466","https://openalex.org/W193767869","https://openalex.org/W1480341462","https://openalex.org/W33240934","https://openalex.org/W2063928587","https://openalex.org/W2088766201","https://openalex.org/W1912336851","https://openalex.org/W2286255795"],"abstract_inverted_index":{"Multiple":[0],"dispatch":[1,36,84,193],"-":[2,21],"the":[3,13,52,174,188,210],"selection":[4],"of":[5,16,43,58,177,190,203,212,217],"a":[6,23,59,124,191,201,204],"function":[7,83,196],"to":[8,25,111,134,145,152],"be":[9],"invoked":[10],"based":[11],"on":[12],"dynamic":[14,213],"type":[15],"two":[17],"or":[18],"more":[19,155,160],"arguments":[20],"is":[22,150,183],"solution":[24],"several":[26],"classical":[27],"problems":[28],"in":[29,209],"object-oriented":[30],"programming.":[31],"Open":[32],"multi-methods":[33,69,114,208],"generalize":[34,80],"multiple":[35],"towards":[37],"open-class":[38],"extensions,":[39],"which":[40],"improve":[41],"separation":[42],"concerns":[44],"and":[45,56,73,85,120,127,131,139,158,168,185,215],"provisions":[46],"for":[47,65,142,206],"retroactive":[48],"design.":[49],"We":[50,122],"present":[51],"rationale,":[53],"design,":[54],"implementation,":[55],"performance":[57,130],"language":[60,118],"feature,":[61],"called":[62],"open":[63,68,113,136,180,207],"multi-methods,":[64],"C++.":[66,143],"Our":[67,76],"support":[70],"both":[71,81],"repeated":[72],"virtual":[74,82,195],"inheritance.":[75],"call":[77],"resolution":[78,87],"rules":[79,97],"overload":[86],"semantics.":[88],"After":[89],"using":[90,103],"all":[91],"information":[92],"from":[93],"argument":[94],"types,":[95],"these":[96,146],"can":[98],"resolve":[99],"further":[100],"ambiguities":[101,161],"by":[102],"covariant":[104],"return":[105],"types.":[106],"Great":[107],"care":[108],"was":[109],"taken":[110],"integrate":[112],"with":[115],"existing":[116,135],"C++":[117],"features":[119],"rules.":[121],"describe":[123],"model":[125],"implementation":[126],"compare":[128],"its":[129],"space":[132],"requirements":[133],"multi-method":[137],"extensions":[138],"workaround":[140],"techniques":[141],"Compared":[144],"techniques,":[147],"our":[148],"approach":[149],"simpler":[151],"use,":[153],"catches":[154],"user":[156],"mistakes,":[157],"resolves":[159],"through":[162],"link-time":[163],"analysis,":[164],"runs":[165],"significantly":[166],"faster,":[167],"requires":[169],"less":[170,186],"memory.":[171],"In":[172],"particular,":[173],"runtime":[175],"cost":[176,189],"calling":[178],"an":[179],"multi":[181],"method":[182],"constant":[184],"than":[187],"double":[192],"(two":[194],"calls).":[197],"Finally,":[198],"we":[199],"provide":[200],"sketch":[202],"design":[205],"presence":[211],"loading":[214],"linking":[216],"libraries.":[218]},"counts_by_year":[{"year":2017,"cited_by_count":1},{"year":2016,"cited_by_count":1},{"year":2014,"cited_by_count":3},{"year":2013,"cited_by_count":4},{"year":2012,"cited_by_count":1}],"updated_date":"2026-04-04T16:13:02.066488","created_date":"2025-10-10T00:00:00"}
