|
Functions often depend on particular behavioral characteristics ("features") of code they invoke. For example, thread-safe code must invoke only thread-safe code if it is to remain thread-safe, and exception-safe code must invoke only exception-safe code. This talk describes a technique that enables the specification of arbitrary combinations of user-defined code features on a per-function basis and that detects violations of feature constraints during compilation. The technique applies to member functions (both nonvirtual and virtual), non-member functions, and function templates; operators are excluded.
(This is an updated version of the talk Scott gave in April 2007. Since then, he's revised his approach to operate entirely during compilation and to support overloading on feature sets. He also no longer shows film clips during the presentation :-})
|