• Tell Me Lies, Tell Me Sweet Little Lies

    Needs a location

    (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 presentation.) 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