...
|
...
|
@@ -4,6 +4,63 @@
|
4
|
4
|
|
5
|
5
|
[`crany`]: https://git.rcrnstn.net/rcrnstn/crany
|
6
|
6
|
|
|
7
|
+## References
|
|
8
|
+
|
|
9
|
+The references below focus on the timeline and online resources.
|
|
10
|
+
|
|
11
|
+This work builds on that of many others:
|
|
12
|
+
|
|
13
|
+- Chris Cleeland, Douglas Schmidt, Timothy Harrison
|
|
14
|
+ - External Polymorphism
|
|
15
|
+ - 1996, Proceedings of the 3rd Pattern Languages of Programming Conference, [paper](https://www.dre.vanderbilt.edu/~schmidt/PDF/C++-EP.pdf)
|
|
16
|
+- Kevlin Henney
|
|
17
|
+ - Valued Conversions
|
|
18
|
+ - 2000, C++ Report, [paper](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.374.2252&rep=rep1&type=pdf)
|
|
19
|
+- Sean Parent
|
|
20
|
+ - Runtime Concepts: Generic Programming and Runtime Polymorphism
|
|
21
|
+ - Unpublished, [paper](https://stlab.cc/legacy/runtime-concepts.html)
|
|
22
|
+ - Concept-Based Runtime Polymorphism
|
|
23
|
+ - 2007, BoostCon, [slides](https://stlab.cc/legacy/figures/Boost_poly.pdf)
|
|
24
|
+ - Value Semantics and Concept-based Polymorphism
|
|
25
|
+ - 2012, C++Now, [talk](https://www.youtube.com/watch?v=_BpMYeUFXv8), [slides](https://sean-parent.stlab.cc/papers-and-presentations/#value-semantics-and-concept-based-polymorphism)
|
|
26
|
+ - Inheritance Is The Base Class of Evil
|
|
27
|
+ - 2013, GoingNative, [talk](https://www.youtube.com/watch?v=bIhUE5uUFOA), [slides](https://sean-parent.stlab.cc/papers-and-presentations/#inheritance-is-the-base-class-of-evil)
|
|
28
|
+ - Better Code: Runtime Polymorphism
|
|
29
|
+ - 2017, NDC, [talk](https://www.youtube.com/watch?v=QGcVXgEVMJg), [slides](https://sean-parent.stlab.cc/papers-and-presentations/#better-code-runtime-polymorphism)
|
|
30
|
+- Louis Dionne
|
|
31
|
+ - Runtime Polymorphism: Back to the Basics
|
|
32
|
+ - 2017, CppCon, [talk](https://www.youtube.com/watch?v=gVGtNFg4ay0), [slides](https://ldionne.com/cppcon-2017-runtime-polymorphism)
|
|
33
|
+ - 2018, ACCU, [talk](https://www.youtube.com/watch?v=H8lFldGvt9w), [slides](https://ldionne.com/accu-2018-runtime-polymorphism)
|
|
34
|
+ - 2018, C++Now, [talk](https://www.youtube.com/watch?v=OtU51Ytfe04), [slides](https://ldionne.com/cppnow-2018-runtime-polymorphism)
|
|
35
|
+
|
|
36
|
+Other related work:
|
|
37
|
+
|
|
38
|
+- Zach Laine
|
|
39
|
+ - Pragmatic Type Erasure: Solving OOP Problems w/ Elegant Design Pattern
|
|
40
|
+ - 2014, CppCon, [talk](https://www.youtube.com/watch?v=0I0FD3N5cgM)
|
|
41
|
+- Sy Brand
|
|
42
|
+ - Dynamic Polymorphism with Metaclasses and Code Injection
|
|
43
|
+ - 2020, CppCon, [talk](https://www.youtube.com/watch?v=8c6BAQcYF_E)
|
|
44
|
+- Klaus Igelberger
|
|
45
|
+ - Breaking Dependencies: Type Erasure - A Design Analysis
|
|
46
|
+ - 2021, CppCon, [talk](https://www.youtube.com/watch?v=4eeESJQk-mw&t=23m26s)
|
|
47
|
+
|
|
48
|
+Related projects:
|
|
49
|
+
|
|
50
|
+- Adobe's [Poly](https://stlab.adobe.com/group__poly__related.html) (of which Sean Parent was a principal contributor)
|
|
51
|
+- Louis Dionne's [Dyno](https://github.com/ldionne/dyno)
|
|
52
|
+- Facebook's [Folly Poly](https://github.com/facebook/folly/blob/main/folly/docs/Poly.md)
|
|
53
|
+
|
|
54
|
+Related patterns:
|
|
55
|
+- Adapter pattern
|
|
56
|
+ - [Wikipedia](https://en.wikipedia.org/wiki/Adapter_pattern)
|
|
57
|
+ - [GoF Design Patterns](https://en.wikipedia.org/wiki/Design_Patterns)
|
|
58
|
+- Decorator pattern
|
|
59
|
+ - [Wikipedia](https://en.wikipedia.org/wiki/Decorator_pattern)
|
|
60
|
+ - [GoF Design Patterns](https://en.wikipedia.org/wiki/Design_Patterns)
|
|
61
|
+- External Polymorphism pattern
|
|
62
|
+ - [WikiWikiWeb](https://wiki.c2.com/?ExternalPolymorphism)
|
|
63
|
+
|
7
|
64
|
## Build system
|
8
|
65
|
|
9
|
66
|
This project supports [CMake][] and uses [`cmake-common`][]. There are several
|