Code reuse is a tough problem. Duplicated code is almost universally frowned upon, but it's not infrequent that my peers don't know how to restructure things and fix it. The most fundamental techniques for code reuse are a blind spot in the community, misunderstood as being either too simple or too complex to be useful. In textbooks the chapters are enumerated by techniques, rather than problems, I think this is foolish: we should give scenarios and approach them from many angles with many tools. That's this talk. We'll look at the problems that motivate using techniques like templates, overloading, tag dispatch, CRTP, mixins, and more to create highly composable code units. The talk will be designed to be accessible to those who've never written a template before and build up to expert level techniques by the end.