By Bret Brown
When considering interfaces in the context of C++, software engineers typically think about C++ language constructs: namespaces, base classes, function prototypes, and other entities defined by the C++ standard.
However, the challenge for C++ library authors is to provide not just carefully-crafted code, but also well-considered projects that deliver functionality to users. Providing useful and reusable libraries means stepping outside the C++ syntax to consider other kinds of interfaces provided by our C++ projects.
This talk goes beyond the C++ syntax to fill in these gaps through an exploration of the other kinds of interfaces and contracts that are implicitly and explicitly provided by C++ projects.
During this discussion, contract-based thinking will be applied to the parts of C++ projects that are not C++ source code. Conceptual tools, pragmatic recommendations, and concrete examples will be suggested for use in maintaining C++ projects and rescoping the role of a C++ software engineer.










