Curried C++ Template Metaprogramming

Activity: Talk or presentationInvited talk


Rather than solely confirming aspects of correctness, types hold the potential to be the primary input in a program's construction. As a Turing complete sublanguage, C++ templates can run arbitrarily complex code at compile time. C++ templates are also a strict, functional language, though this aspect can be marginalised, owing to weak support for higher-order (meta)functions; and other omissions such as currying and type classes. In this talk we introduce a small library to allow idiomatic higher-order C++ metafunction classes to be implicitly curried, and demonstrate its application to a selection of interesting folds; with the assistance of the tacit/pointfree paradigm.
Period9 May 2018
Held atUniversity of Glasgow, United Kingdom
Degree of RecognitionRegional


  • types
  • templates
  • C++
  • metaprogramming
  • functional programming