January 2020
Intermediate to advanced
454 pages
11h 25m
English
One of the biggest limitations with header-only libraries is that, prior to C++17, there was no way to create global variables. Although global variables should be avoided whenever possible, there are situations where they are needed. To demonstrate this, let's create a simple API that outputs to stdout as follows:
#ifndef MY_LIBRARY#define MY_LIBRARY#include <iostream>#include <iomanip>namespace library_name{ void my_api(bool show_hex = false) { if (show_hex) { std::cout << std::hex << "The answer is: " << 42 << '\n'; } else { std::cout << std::dec << "The answer is: " << 42 << '\n'; } }}#endif
The preceding example creates an API that will output to stdout. If the API is executed with true instead of the default false