1
2\input{header}
3\begin{tikzpicture}[scale=1, transform shape]
4
5\newnamedcomponent{0}{2.5}{GreeterImpl1}{GreeterImpl}
6\newnamedcomponent{0}{0}{GreeterImpl2}{GreeterImpl}
7\umlprovidedinterface[interface=GreeterImpl<W>, distance=3.2, padding=0.9cm]{GreeterImpl1}
8\umlrequiredinterface[interface=W, distance=2.5, padding=0.9cm]{GreeterImpl1}
9\node at (4.5,2.8) {(for any type W)};
10\umlprovidedinterface[interface=std::function<std::unique\_ptr<GreeterImpl<W>{}>()>, distance=5.9, padding=0.9cm]{GreeterImpl2}
11\umlrequiredinterface[interface=W, distance=2.5, padding=0.9cm]{GreeterImpl2}
12\node at (4.5,0.3) {(for any type W)};
13
14\end{tikzpicture}
15\input{footer}
16