Computing While Compiling: Reasons and Methods for Compile-time Metaprogramming

Ron Garcia
Seminar

Software libraries make it much easier for developers to build applications, but the abstractions they provide often come with a price: slow run-time performance and some usage errors overlooked by the type checker at compile-time. In this talk, I discuss how C++ template metaprogramming has been used to implement software libraries that provide high-level interfaces without sacrificing run-time performance and check domain-specific properties at compile-time. I discuss the benefits and shortcomings of template techniques. Based on my analysis of the essential capabilities of C++ templates for template metaprogramming, I present a language design that directly and intentionally captures those capabilities.