There seem to be plenty of answers clarifying the semantics of C99's inline
specification, with a single extern
translation unit / implementation. If a C++ program / library was to use a C(99) API, with an extern "C" {}
wrapper, will it honour the 'single implementation' semantics of the library?
If the C++ compiler is still free to create multiple instantiations as needed, is it required to recognise the C implementation as just another instance, via linker magic, or is this implementation-specific?
From my understanding, the only portable interoperable solution seems to be a static inline
specification. Is C99's extern inline
fundamentally incompatible with C++? (specifically C++11 and above)