Supponiamo che ci sia un C++ 11 API che utilizza le classi enum:collegamento di enumerazioni e enum classi
// api.hpp
enum class E {A, B, C};
void f(E);
...
// api.cpp
void f(E e)
{
if (e == E::A)
...
}
Ora supponiamo che io vorrei usare questa API, ma non ho un C + +11 compilatore. Quindi:
- Modificare
api.hpp
e modificare la classe enum per essere solo un normale enum. - Scrivere un codice codice che include lo modificato e utilizza normalmente l'API (ad esempio chiamate
f
). - Compilare questo codice con il mio compilatore non C++ 11 e collegarlo all'implementazione API che è stata compilata con un compilatore C++ 11 (utilizzando lo 10 non modificato).
Questo sembra funzionare con GCC, ma è sicuro in generale, o sto giocando con il fuoco (violazioni ODR e così via)?
Supponiamo che i due compilatori siano altrimenti compatibili con il collegamento, è solo la classe enum vs. enum in questione.