{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,12]],"date-time":"2026-04-12T17:07:56Z","timestamp":1776013676012,"version":"3.50.1"},"reference-count":86,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2020,1,30]],"date-time":"2020-01-30T00:00:00Z","timestamp":1580342400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100012166","name":"National Key R&D Program of China","doi-asserted-by":"crossref","award":["2018YFB1003901"],"award-info":[{"award-number":["2018YFB1003901"]}],"id":[{"id":"10.13039\/501100012166","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100001809","name":"National Natural Science Foundation of China","doi-asserted-by":"crossref","award":["61872177, 61832009, 61772263, 61432001, 61772259"],"award-info":[{"award-number":["61872177, 61832009, 61772263, 61432001, 61772259"]}],"id":[{"id":"10.13039\/501100001809","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2020,1,31]]},"abstract":"<jats:p>Generic programming is a key paradigm for developing reusable software components. The inherent support for generic constructs is therefore important in programming languages. As for C++, the generic construct, templates, has been supported since the language was first released. However, little is currently known about how C++ templates are actually used in developing real software. In this study, we conduct an experiment to investigate the use of templates in practice. We analyze 1,267 historical revisions of 50 open source systems, consisting of 566 million lines of C++ code, to collect the data of the practical use of templates. We perform statistical analyses on the collected data and produce many interesting results. We uncover the following important findings: (1) templates are practically used to prevent code duplication, but this benefit is largely confined to a few highly used templates; (2) function templates do not effectively replace C-style generics, and developers with a C background do not show significant preference between the two language constructs; (3) developers seldom convert dynamic polymorphism to static polymorphism by using CRTP (Curiously Recursive Template Pattern); (4) the use of templates follows a power-law distribution in most cases, and C++ developers who prefer using templates are those without other language background; (5) C developer background seems to override C++ project guidelines. These findings are helpful not only for researchers to understand the tendency of template use but also for tool builders to implement better tools to support generic programming.<\/jats:p>","DOI":"10.1145\/3356579","type":"journal-article","created":{"date-parts":[[2020,1,30]],"date-time":"2020-01-30T22:27:53Z","timestamp":1580423273000},"page":"1-49","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":8,"title":["How C++ Templates Are Used for Generic Programming"],"prefix":"10.1145","volume":"29","author":[{"given":"Lin","family":"Chen","sequence":"first","affiliation":[{"name":"Nanjing University, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Di","family":"Wu","sequence":"additional","affiliation":[{"name":"Momenta, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Wanwangying","family":"Ma","sequence":"additional","affiliation":[{"name":"Nanjing University, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Yuming","family":"Zhou","sequence":"additional","affiliation":[{"name":"Nanjing University, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Baowen","family":"Xu","sequence":"additional","affiliation":[{"name":"Nanjing University, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Hareton","family":"Leung","sequence":"additional","affiliation":[{"name":"Hong Kong Polytechnic University, China"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,1,30]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1046\/j.1365-2656.1999.00349.x"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2009.06.055"},{"key":"e_1_2_2_3_1","volume-title":"Generic Programming and the STL: Using and Extending the C++ Standard Template Library","author":"Austern Matthew H.","unstructured":"Matthew H. Austern . 1999. Generic Programming and the STL: Using and Extending the C++ Standard Template Library . Addison-Wesley . Matthew H. Austern. 1999. Generic Programming and the STL: Using and Extending the C++ Standard Template Library. Addison-Wesley."},{"key":"e_1_2_2_4_1","volume-title":"Proceedings of the 17th International Conference on Software Engineering and Knowledge Engineering. 109--114","author":"Basit Hamid Abdul","year":"2005","unstructured":"Hamid Abdul Basit , Damith C. Rajapakse , and Stan Jarzabek . 2005 . An empirical study on limits of clone unification using generics . In Proceedings of the 17th International Conference on Software Engineering and Knowledge Engineering. 109--114 . Hamid Abdul Basit, Damith C. Rajapakse, and Stan Jarzabek. 2005. An empirical study on limits of clone unification using generics. In Proceedings of the 17th International Conference on Software Engineering and Knowledge Engineering. 109--114."},{"key":"e_1_2_2_5_1","volume-title":"Retrieved","author":"Bendersky Eli","year":"2013","unstructured":"Eli Bendersky . 2013 . The cost of dynamic (virtual calls) vs. static (CRTP) dispatch in C++ . Retrieved July 15, 2019, from https:\/\/eli.thegreenplace.net\/2013\/12\/05\/the-cost-of-dynamic-virtual-calls-vs-static-crtp-dispatch-in-c Eli Bendersky. 2013. The cost of dynamic (virtual calls) vs. static (CRTP) dispatch in C++. Retrieved July 15, 2019, from https:\/\/eli.thegreenplace.net\/2013\/12\/05\/the-cost-of-dynamic-virtual-calls-vs-static-crtp-dispatch-in-c"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1111\/j.2517-6161.1995.tb02031.x"},{"key":"e_1_2_2_7_1","volume-title":"Retrieved","author":"Blome Mike","year":"2014","unstructured":"Mike Blome , Saisang Cai , Colin Robertson , Mike Jones , Next Turn , and Gordon Hogenson . 2014 . Introduction to Active Template Library (ATL) . Retrieved July 15, 2019, from https:\/\/docs.microsoft.com\/en-us\/cpp\/atl\/introduction-to-atl?view&equals;vs-2019. Mike Blome, Saisang Cai, Colin Robertson, Mike Jones, Next Turn, and Gordon Hogenson. 2014. Introduction to Active Template Library (ATL). Retrieved July 15, 2019, from https:\/\/docs.microsoft.com\/en-us\/cpp\/atl\/introduction-to-atl?view&equals;vs-2019."},{"key":"e_1_2_2_8_1","volume-title":"Retrieved","author":"Blome Mike","year":"2017","unstructured":"Mike Blome , Saisang Cai , Colin Robertson , Mike Jones , Next Turn , and Gordon Hogenson . 2017 . Function Templates . Retrieved July 15, 2019, from https:\/\/docs.microsoft.com\/en-us\/cpp\/cpp\/function-templates?view&equals;vs-2017. Mike Blome, Saisang Cai, Colin Robertson, Mike Jones, Next Turn, and Gordon Hogenson. 2017. Function Templates. Retrieved July 15, 2019, from https:\/\/docs.microsoft.com\/en-us\/cpp\/cpp\/function-templates?view&equals;vs-2017."},{"key":"e_1_2_2_9_1","volume-title":"Retrieved","year":"2019","unstructured":"Boost. 2019 . Boost C++ Libraries . Retrieved July 15, 2019, from https:\/\/www.boost.org\/. Boost. 2019. Boost C++ Libraries. Retrieved July 15, 2019, from https:\/\/www.boost.org\/."},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985441.1985448"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2005.55"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1137\/070710111"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.5555\/381473.381509"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1046\/j.1365-2656.1999.00268.x"},{"key":"e_1_2_2_15_1","volume-title":"Proceedings of the 36th International Conference on Software Engineering. 779--790","author":"Dyer Robert","unstructured":"Robert Dyer , Hridesh Rajan , Hoan Anh Nguyen , and Tien N. Nguyen . 2014. Mining billions of AST nodes to study actual and potential usage of Java language features . In Proceedings of the 36th International Conference on Software Engineering. 779--790 . DOI:https:\/\/doi.org\/doi:10.1145\/2568225.2568295 10.1145\/2568225.2568295 Robert Dyer, Hridesh Rajan, Hoan Anh Nguyen, and Tien N. Nguyen. 2014. Mining billions of AST nodes to study actual and potential usage of Java language features. In Proceedings of the 36th International Conference on Software Engineering. 779--790. DOI:https:\/\/doi.org\/doi:10.1145\/2568225.2568295"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1890\/0012-9658(1999)080[0735:TSOCDN]2.0.CO;2"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2002.1158288"},{"key":"e_1_2_2_18_1","volume-title":"60 Tips on Object Oriented Programming","author":"Ganesh S. G.","unstructured":"S. G. Ganesh . 2008. 60 Tips on Object Oriented Programming . McGraw-Hill Education . S. G. Ganesh. 2008. 60 Tips on Object Oriented Programming. McGraw-Hill Education."},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796806006198"},{"key":"e_1_2_2_20_1","volume-title":"Retrieved","author":"Gilpin Andrew","year":"2002","unstructured":"Andrew Gilpin . 2002 . C++ performance tips . Retrieved July 16, 2019, from http:\/\/www.cs.cmu.edu\/ gilpin\/c%2B%2B\/performance.html#virtualfunctions. Andrew Gilpin. 2002. C++ performance tips. Retrieved July 16, 2019, from http:\/\/www.cs.cmu.edu\/ gilpin\/c%2B%2B\/performance.html#virtualfunctions."},{"key":"e_1_2_2_21_1","unstructured":"William H. Greene. 2012. Econometric Analysis. Pearson Education.  William H. Greene. 2012. Econometric Analysis. Pearson Education."},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1214\/ss\/1009211803"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1244002.1244243"},{"key":"e_1_2_2_24_1","volume-title":"Elements of Software Science","author":"Halstead Maurice H.","unstructured":"Maurice H. Halstead . 1977. Elements of Software Science . Elsevier . Maurice H. Halstead. 1977. Elements of Software Science. Elsevier."},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1869459.1869462"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509528"},{"key":"e_1_2_2_27_1","volume-title":"Retrieved","author":"Scientific Toolworks Inc.","year":"2014","unstructured":"Scientific Toolworks Inc. 2014 . Understand: Visualize your code . Retrieved July 15, 2019, from https:\/\/scitools.com\/. Scientific Toolworks Inc. 2014. Understand: Visualize your code. Retrieved July 15, 2019, from https:\/\/scitools.com\/."},{"key":"e_1_2_2_28_1","volume-title":"Retrieved","author":"Wikimedia Foundation Inc.","year":"2016","unstructured":"Wikimedia Foundation Inc. 2016 . Category: C++ libraries - Wikipedia . Retrieved July 15, 2019, from https:\/\/en.wikipedia.org\/wiki\/Category:C%2B%2B_libraries. Wikimedia Foundation Inc. 2016. Category: C++ libraries - Wikipedia. Retrieved July 15, 2019, from https:\/\/en.wikipedia.org\/wiki\/Category:C%2B%2B_libraries."},{"key":"e_1_2_2_29_1","volume-title":"Retrieved","author":"IEC.","year":"1998","unstructured":"ISO\/ IEC. 1998 . Information Technology -- Programming Languages -- C++ . Retrieved July 15, 2019, from https:\/\/www.iso.org\/standard\/25845.html. ISO\/IEC. 1998. Information Technology -- Programming Languages -- C++. Retrieved July 15, 2019, from https:\/\/www.iso.org\/standard\/25845.html."},{"key":"e_1_2_2_30_1","volume-title":"Information Technology -- Programming Languages -- C++","author":"IEC.","year":"2019","unstructured":"ISO\/ IEC. 2003. Information Technology -- Programming Languages -- C++ , Second Edition. Retrieved July 15, 2019 , from https:\/\/www.iso.org\/standard\/38110.html. ISO\/IEC. 2003. Information Technology -- Programming Languages -- C++, Second Edition. Retrieved July 15, 2019, from https:\/\/www.iso.org\/standard\/38110.html."},{"key":"e_1_2_2_31_1","volume-title":"Information Technology -- Programming Languages -- C++","author":"IEC.","year":"2019","unstructured":"ISO\/ IEC. 2011. Information Technology -- Programming Languages -- C++ , Third Edition. Retrieved July 15, 2019 , from https:\/\/www.iso.org\/standard\/50372.html. ISO\/IEC. 2011. Information Technology -- Programming Languages -- C++, Third Edition. Retrieved July 15, 2019, from https:\/\/www.iso.org\/standard\/50372.html."},{"key":"e_1_2_2_32_1","volume-title":"Information Technology -- Programming Languages -- C++","author":"IEC.","year":"2019","unstructured":"ISO\/ IEC. 2014. Information Technology -- Programming Languages -- C++ , Fourth Edition. Retrieved July 15, 2019 , from https:\/\/www.iso.org\/standard\/64029.html. ISO\/IEC. 2014. Information Technology -- Programming Languages -- C++, Fourth Edition. Retrieved July 15, 2019, from https:\/\/www.iso.org\/standard\/64029.html."},{"key":"e_1_2_2_33_1","volume-title":"Information Technology -- Programming Languages -- C++","author":"IEC.","year":"2019","unstructured":"ISO\/ IEC. 2017. Information Technology -- Programming Languages -- C++ , Fifth Edition. Retrieved July 15, 2019 , from https:\/\/www.iso.org\/standard\/68564.html. ISO\/IEC. 2017. Information Technology -- Programming Languages -- C++, Fifth Edition. Retrieved July 15, 2019, from https:\/\/www.iso.org\/standard\/68564.html."},{"key":"e_1_2_2_34_1","first-page":"01","article-title":"Estimating fitness: A comparison of body condition indices","volume":"77","author":"Jakob Elizabeth M.","year":"1996","unstructured":"Elizabeth M. Jakob , Samuel D. Marshall , and George W. Uetz . 1996 . Estimating fitness: A comparison of body condition indices . Canadian Journal of Zoology 77 , 01 (October 1996), 61--67. DOI:https:\/\/doi.org\/doi:10.2307\/3545585 10.2307\/3545585 Elizabeth M. Jakob, Samuel D. Marshall, and George W. Uetz. 1996. Estimating fitness: A comparison of body condition indices. Canadian Journal of Zoology 77, 01 (October 1996), 61--67. DOI:https:\/\/doi.org\/doi:10.2307\/3545585","journal-title":"Canadian Journal of Zoology"},{"key":"e_1_2_2_35_1","article-title":"Population dynamics of a tree-dwelling aphid: Regulation and density-independent processes","author":"Jaro\u0161\u00edk Vojtech","year":"1999","unstructured":"Vojtech Jaro\u0161\u00edk and A. F. G. Dixon . 1999 . Population dynamics of a tree-dwelling aphid: Regulation and density-independent processes . Journal of Animal Ecology 68 ( December 1999), 726--732. DOI:https:\/\/doi.org\/doi:10.1046\/j.1365-2656.1999.00321.x 10.1046\/j.1365-2656.1999.00321.x Vojtech Jaro\u0161\u00edk and A. F. G. Dixon. 1999. Population dynamics of a tree-dwelling aphid: Regulation and density-independent processes. Journal of Animal Ecology 68 (December 1999), 726--732. DOI:https:\/\/doi.org\/doi:10.1046\/j.1365-2656.1999.00321.x","journal-title":"Journal of Animal Ecology 68"},{"key":"e_1_2_2_36_1","volume-title":"The C++ Standard Library: A Tutorial and Reference","author":"Josuttis Nicolai M.","unstructured":"Nicolai M. Josuttis . 2012. The C++ Standard Library: A Tutorial and Reference ( 2 nd ed.). Addison-Wesley . Nicolai M. Josuttis. 2012. The C++ Standard Library: A Tutorial and Reference (2nd ed.). Addison-Wesley.","edition":"2"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985441.1985447"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1046\/j.1365-2656.1999.00331.x"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.5381\/jot.2013.12.4.a1"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICPC.2012.6240483"},{"key":"e_1_2_2_41_1","first-page":"8","article-title":"Comparing high-change modules and modules with the highest measurement values in two large-scale open-source products","volume":"31","author":"G\u00fcnes Koru A.","year":"2005","unstructured":"A. G\u00fcnes Koru and Jeff (Jianhui) Tian . 2005 . Comparing high-change modules and modules with the highest measurement values in two large-scale open-source products . IEEE Transactions on Software Engineering 31 , 8 (August 2005), 625--642. DOI:https:\/\/doi.org\/doi:10.1109\/TSE.2005.89 10.1109\/TSE.2005.89 A. G\u00fcnes Koru and Jeff (Jianhui) Tian. 2005. Comparing high-change modules and modules with the highest measurement values in two large-scale open-source products. IEEE Transactions on Software Engineering 31, 8 (August 2005), 625--642. DOI:https:\/\/doi.org\/doi:10.1109\/TSE.2005.89","journal-title":"IEEE Transactions on Software Engineering"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSM.2012.6405259"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1046\/j.1365-2656.1999.00311.x"},{"key":"e_1_2_2_44_1","volume-title":"Proceedings of the 8th International AAAI Conference on Weblogs and Social Media. 295--304","author":"Lima Antonio","year":"2014","unstructured":"Antonio Lima , Luca Rossi , and Mirco Musolesi . 2014 . Coding together at scale: GitHub as a collaborative social network . In Proceedings of the 8th International AAAI Conference on Weblogs and Social Media. 295--304 . Antonio Lima, Luca Rossi, and Mirco Musolesi. 2014. Coding together at scale: GitHub as a collaborative social network. In Proceedings of the 8th International AAAI Conference on Weblogs and Social Media. 295--304."},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1890\/0012-9658(1999)080[1522:GPOPIA]2.0.CO;2"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1046\/j.1365-2656.1999.00325.x"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1046\/j.1365-2656.1999.00306.x"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1890\/0012-9658(1999)080[0989:LHCONS]2.0.CO;2"},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384616.2384666"},{"key":"e_1_2_2_50_1","volume-title":"Proceedings of the 2013 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications. 1--18","author":"Leo","unstructured":"Leo A. Meyerovich and Ariel S. Rabkin. 2013. Empirical analysis of programming language adoption . In Proceedings of the 2013 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications. 1--18 . DOI:https:\/\/doi.org\/doi:10.1145\/2509136.2509515 10.1145\/2509136.2509515 Leo A. Meyerovich and Ariel S. Rabkin. 2013. Empirical analysis of programming language adoption. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications. 1--18. DOI:https:\/\/doi.org\/doi:10.1145\/2509136.2509515"},{"key":"e_1_2_2_51_1","volume-title":"Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library","author":"Meyers Scott","unstructured":"Scott Meyers . 2001. Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library ( 2 nd ed.). Addison-Wesley . Scott Meyers. 2001. Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library (2nd ed.). Addison-Wesley.","edition":"2"},{"key":"e_1_2_2_52_1","volume-title":"55 Specific Ways to Improve Your Programs and Designs","author":"Meyers Scott","unstructured":"Scott Meyers . 2008. Effective C++ : 55 Specific Ways to Improve Your Programs and Designs ( 3 rd ed.). Addison-Wesley . Scott Meyers. 2008. Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd ed.). Addison-Wesley.","edition":"3"},{"key":"e_1_2_2_53_1","volume-title":"Macros. Retrieved","year":"2019","unstructured":"Microsoft. [n.d.]. Templates vs . Macros. Retrieved July 15, 2019 , from https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id&equals;55979. Microsoft. [n.d.]. Templates vs. Macros. Retrieved July 15, 2019, from https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id&equals;55979."},{"key":"e_1_2_2_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/2593882.2593898"},{"key":"e_1_2_2_55_1","volume-title":"Retrieved","author":"Naboulsi Zain","year":"2010","unstructured":"Zain Naboulsi . 2010 . Code Metrics Depth of Inheritance (DIT) . Retrieved July 15, 2019, from https:\/\/blogs.msdn.microsoft.com\/zainnab\/2011\/05\/19\/code-metrics-depth-of-inheritance-dit\/. Zain Naboulsi. 2010. Code Metrics Depth of Inheritance (DIT). Retrieved July 15, 2019, from https:\/\/blogs.msdn.microsoft.com\/zainnab\/2011\/05\/19\/code-metrics-depth-of-inheritance-dit\/."},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/2786805.2786834"},{"key":"e_1_2_2_57_1","volume-title":"Proceeding of the 37th International Conference on Software Engineering. 778--788","author":"Nanz Sebastian","unstructured":"Sebastian Nanz and Carlo A. Furia . 2015. A comparative study of programming languages in Rosetta Code . In Proceeding of the 37th International Conference on Software Engineering. 778--788 . DOI:https:\/\/doi.org\/doi:10.1109\/ICSE.2015.90 10.1109\/ICSE.2015.90 Sebastian Nanz and Carlo A. Furia. 2015. A comparative study of programming languages in Rosetta Code. In Proceeding of the 37th International Conference on Software Engineering. 778--788. DOI:https:\/\/doi.org\/doi:10.1109\/ICSE.2015.90"},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2393596.2393660"},{"key":"e_1_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.2307\/177019"},{"key":"e_1_2_2_60_1","volume-title":"Proceedings of the 6th IEEE International Workshop on Source Code Analysis and Manipulation. 31--42","author":"Pan Kai","unstructured":"Kai Pan , Sunghun Kim , and E. James Whitehead Jr . 2006. Bug classification using program slicing metrics . In Proceedings of the 6th IEEE International Workshop on Source Code Analysis and Manipulation. 31--42 . DOI:https:\/\/doi.org\/doi:10.1109\/SCAM.2006.6 10.1109\/SCAM.2006.6 Kai Pan, Sunghun Kim, and E. James Whitehead Jr. 2006. Bug classification using program slicing metrics. In Proceedings of the 6th IEEE International Workshop on Source Code Analysis and Manipulation. 31--42. DOI:https:\/\/doi.org\/doi:10.1109\/SCAM.2006.6"},{"key":"e_1_2_2_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985441.1985446"},{"key":"e_1_2_2_62_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-012-9236-6"},{"key":"e_1_2_2_63_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2015.04.064"},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635922"},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1139\/z85-213"},{"key":"e_1_2_2_66_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-013-9298-0"},{"key":"e_1_2_2_67_1","volume-title":"Proceedings of Annual Meeting of the Florida Association of Institutional Research. 1--33","author":"Romano Jeanine","year":"2006","unstructured":"Jeanine Romano , Jeffrey D. Kromrey , Jesse Coraggio , and Jeff Skowronek . 2006 . Appropriate statistics for ordinal level data: Should we really be using t-test and Cohen\u2019s d for evaluating group differences on the NSSE and other surveys? In Proceedings of Annual Meeting of the Florida Association of Institutional Research. 1--33 . Jeanine Romano, Jeffrey D. Kromrey, Jesse Coraggio, and Jeff Skowronek. 2006. Appropriate statistics for ordinal level data: Should we really be using t-test and Cohen\u2019s d for evaluating group differences on the NSSE and other surveys? In Proceedings of Annual Meeting of the Florida Association of Institutional Research. 1--33."},{"key":"e_1_2_2_68_1","doi-asserted-by":"publisher","DOI":"10.1145\/2517208.2517215"},{"key":"e_1_2_2_69_1","volume-title":"Elements of Programming","author":"Stepanov Alexander","unstructured":"Alexander Stepanov and Paul McJones . 2009. Elements of Programming ( 2 nd ed.). Addison-Wesley . Alexander Stepanov and Paul McJones. 2009. Elements of Programming (2nd ed.). Addison-Wesley.","edition":"2"},{"key":"e_1_2_2_70_1","volume-title":"The Design and Evolution of C++","author":"Stroustrup Bjarne","unstructured":"Bjarne Stroustrup . 1994. The Design and Evolution of C++ . Addison-Wesley . Bjarne Stroustrup. 1994. The Design and Evolution of C++. Addison-Wesley."},{"key":"e_1_2_2_71_1","volume-title":"The C++ Programming Language","author":"Stroustrup Bjarne","unstructured":"Bjarne Stroustrup . 2000. The C++ Programming Language ( 3 rd ed.). Addison Wesley . Bjarne Stroustrup. 2000. The C++ Programming Language (3rd ed.). Addison Wesley.","edition":"3"},{"key":"e_1_2_2_72_1","volume-title":"Retrieved","author":"Stroustrup Bjarne","year":"2004","unstructured":"Bjarne Stroustrup . 2004 . Templates aliases for C++ . Retrieved July 15, 2019, from http:\/\/www.stroustrup.com\/template-aliases.pdf. Bjarne Stroustrup. 2004. Templates aliases for C++. Retrieved July 15, 2019, from http:\/\/www.stroustrup.com\/template-aliases.pdf."},{"key":"e_1_2_2_73_1","volume-title":"The C++ Programming Language","author":"Stroustrup Bjarne","unstructured":"Bjarne Stroustrup . 2013. The C++ Programming Language ( 4 th ed.). Addison-Wesley , New York, NY . Bjarne Stroustrup. 2013. The C++ Programming Language (4th ed.). Addison-Wesley, New York, NY.","edition":"4"},{"key":"e_1_2_2_74_1","volume-title":"Retrieved","author":"Stroustrup Bjarne","year":"2019","unstructured":"Bjarne Stroustrup and Herb Sutter . 2019 . C++ Core Guidelines . Retrieved July 15, 2019, from http:\/\/isocpp.github.io\/CppCoreGuidelines\/CppCoreGuidelines. Bjarne Stroustrup and Herb Sutter. 2019. C++ Core Guidelines. Retrieved July 15, 2019, from http:\/\/isocpp.github.io\/CppCoreGuidelines\/CppCoreGuidelines."},{"key":"e_1_2_2_75_1","volume-title":"101 Rules, Guidelines, and Best Practices. Pearson Education","author":"Sutter Herb","unstructured":"Herb Sutter and Andrei Alexandrescu . 2005. C++ Coding Standards : 101 Rules, Guidelines, and Best Practices. Pearson Education , Inc . Herb Sutter and Andrei Alexandrescu. 2005. C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. Pearson Education, Inc."},{"key":"e_1_2_2_76_1","doi-asserted-by":"publisher","DOI":"10.1890\/0012-9658(1999)080[1267:DDPITP]2.0.CO;2"},{"key":"e_1_2_2_77_1","volume-title":"Josuttis","author":"Vandevoorde David","year":"2002","unstructured":"David Vandevoorde and Nicolai M . Josuttis . 2002 . C++ Templates : The Complete Guide. Addison-Wesley . David Vandevoorde and Nicolai M. Josuttis. 2002. C++ Templates: The Complete Guide. Addison-Wesley."},{"key":"e_1_2_2_78_1","volume-title":"Retrieved","author":"Warren Genevieve","year":"2016","unstructured":"Genevieve Warren , Jill Reinauer , and Eddy Nakamura . 2016 . CA1501: Avoid excessive inheritance . Retrieved July 15, 2019 from https:\/\/docs.microsoft.com\/en-us\/visualstudio\/code-quality\/ca1501?view&equals;vs-2019. Genevieve Warren, Jill Reinauer, and Eddy Nakamura. 2016. CA1501: Avoid excessive inheritance. Retrieved July 15, 2019 from https:\/\/docs.microsoft.com\/en-us\/visualstudio\/code-quality\/ca1501?view&equals;vs-2019."},{"key":"e_1_2_2_79_1","doi-asserted-by":"publisher","DOI":"10.1046\/j.1365-2656.1999.00276.x"},{"key":"e_1_2_2_80_1","volume-title":"Proceedings of the 26th International Conference on Software Engineering and Knowledge Engineering (SEKE\u201914)","author":"Wu Di","year":"2014","unstructured":"Di Wu , Lin Chen , and Baowen Xu . 2014 . An empirical study on the adoption of C++ templates: Library templates versus user defined templates . In Proceedings of the 26th International Conference on Software Engineering and Knowledge Engineering (SEKE\u201914) . 144--149. Di Wu, Lin Chen, and Baowen Xu. 2014. An empirical study on the adoption of C++ templates: Library templates versus user defined templates. In Proceedings of the 26th International Conference on Software Engineering and Knowledge Engineering (SEKE\u201914). 144--149."},{"key":"e_1_2_2_81_1","doi-asserted-by":"publisher","DOI":"10.1109\/ESEM.2015.7321187"},{"key":"e_1_2_2_82_1","doi-asserted-by":"publisher","DOI":"10.18293\/SEKE2015-009"},{"key":"e_1_2_2_83_1","doi-asserted-by":"publisher","DOI":"10.18293\/SEKE2015-064"},{"key":"e_1_2_2_84_1","doi-asserted-by":"crossref","first-page":"5","DOI":"10.1109\/TSE.2009.32","article-title":"Examining the potentially confounding effect of class size on the associations between object-oriented metrics and change-proneness","volume":"35","author":"Zhou Yuming","year":"2009","unstructured":"Yuming Zhou , Hareton Leung , and Baowen Xu . 2009 . Examining the potentially confounding effect of class size on the associations between object-oriented metrics and change-proneness . IEEE Transactions on Software Engineering 35 , 5 (September 2009), 607--623. DOI:https:\/\/doi.org\/doi:10.1109\/TSE.2009.32 10.1109\/TSE.2009.32 Yuming Zhou, Hareton Leung, and Baowen Xu. 2009. Examining the potentially confounding effect of class size on the associations between object-oriented metrics and change-proneness. IEEE Transactions on Software Engineering 35, 5 (September 2009), 607--623. DOI:https:\/\/doi.org\/doi:10.1109\/TSE.2009.32","journal-title":"IEEE Transactions on Software Engineering"},{"key":"e_1_2_2_85_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2009.11.704"},{"key":"e_1_2_2_86_1","doi-asserted-by":"publisher","DOI":"10.1145\/2556777"}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3356579","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3356579","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T23:22:54Z","timestamp":1750202574000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3356579"}},"subtitle":["An Empirical Study on 50 Open Source Systems"],"short-title":[],"issued":{"date-parts":[[2020,1,30]]},"references-count":86,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2020,1,31]]}},"alternative-id":["10.1145\/3356579"],"URL":"https:\/\/doi.org\/10.1145\/3356579","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,1,30]]},"assertion":[{"value":"2016-08-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2019-08-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2020-01-30","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}