Curiously recurring template pattern: Difference between revisions

Content deleted Content added
Lgasc (talk | contribs)
m Deducing this: Mark up inconspicuous feature name
Jcoplien (talk | contribs)
No edit summary
Line 4:
 
==History==
The technique was formalized in 1989 as "''F''-bounded quantification."<ref>{{cite web|url=http://cs.utexas.edu/~wcook/papers/FBound89/CookFBound89.pdf|title=F-Bounded Polymorphism for Object-Oriented Programming|author=William Cook|date=1989|display-authors=etal}}</ref> The name "CRTP" was independently coined by [[Jim Coplien]] in 1995,<ref>{{cite journal | author=Coplien, James O. | title=Curiously Recurring Template Patterns | journal=C++ Report | date=February 1995 | pages=24–27 | url=httphttps://sitesdrive.google.com/afile/gertrudandcope.comd/info1yJPlJ2d_79gxEzicliT_M2Qn2dwOfCOP/Publications/InheritedTemplate.pdfview}}</ref> who had observed it in some of the earliest [[C++]] template code
as well as in code examples that Timothy Budd created in his multiparadigm language Leda.<ref>{{cite book | first=Timothy | last=Budd | authorlink=| title=Multiparadigm programming in Leda | publisher=Addison-Wesley | isbn=0-201-82080-3 | year=1994| title-link=Multiparadigm programming in Leda }}</ref> It is sometimes called "Upside-Down Inheritance"<ref>{{Cite web|url=http://www.apostate.com/programming/atlupsidedown.html |title=Apostate Café: ATL and Upside-Down Inheritance |date=2006-03-15 |access-date=2016-10-09 |url-status=bot: unknown |archiveurl=https://web.archive.org/web/20060315072824/http://www.apostate.com/programming/atlupsidedown.html |archivedate=15 March 2006 }}</ref><ref>{{Cite web|url=http://archive.devx.com/free/mgznarch/vcdj/1999/julmag99/atlinherit1.asp |title=ATL and Upside-Down Inheritance |date=2003-06-04 |access-date=2016-10-09 |url-status=bot: unknown |archiveurl=https://web.archive.org/web/20030604104137/http://archive.devx.com/free/mgznarch/vcdj/1999/julmag99/atlinherit1.asp |archivedate=4 June 2003 }}</ref> due to the way it allows class hierarchies to be extended by substituting different base classes.