(This talk was inspired by an off-the-cuff lightning talk
at CppCon 2019. After receiving encouragement to do so,
the talk has been expanded into a full-length
As developers, we aim to write APIs whose contract is
clear to both the user and the implementor.
Unfortunately, it is remarkably easy to write C++ API
contracts that may not exactly tell the truth, and some
times it takes incredible effort to squeeze the truth
out of them. Throw in type traits, template
specializations, special member functions and overload
sets, and we have a situation where even George
Washington might tell a lie or two.
As time goes by, we gain more standard means of compile
time introspection, and more code is utilizing such
features. While telling the truth is always a good
thing (unless you are a politician), it is becoming more
important to pay attention to the ways in which our code
may say one thing and do something else.
Jody Hagins started compiling source code with a C++
compiler in 1984. However, he didn't start programming
in C++ until 1992, when he read The Greatest C++ Book
Ever Written, "Advanced C++ Programming Styles and
Idioms" by Jim Copien. That book, combined with cfront,
which generated C code from C++ source, gave him the
joyful task of writing SVr4 Streams drivers in C++.
Ever since, he has been hooked on writing C++ code for
kernel modules, large telephony applications, and, since
the late 1990s, applications in what is now known as the
high frequency trading industry. This is his first
public C++ presentation. Be ye forewarned